void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: _InheriteWidgetDemo(),
),
);
}
}
class _InheriteWidgetDemo extends StatefulWidget {
_InheriteWidgetDemo({Key? key}) : super(key: key);
@override
State<_InheriteWidgetDemo> createState() => __InheriteWidgetDemoState();
}
class __InheriteWidgetDemoState extends State<_InheriteWidgetDemo> {
int _count = 0;
@override
Widget build(BuildContext context) {
return CountData(
countData: _count,
childWidget: Container(
child: Center(
child: Column(
children: [
SizedBox(
height: 100,
),
Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(child: Container(child: Text1())),
),
),
ElevatedButton(
onPressed: () {
_count++;
setState(() {});
},
child: Text("点击数字增加"))
],
),
),
));
}
}
class Text1 extends StatelessWidget {
const Text1({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text2();
}
}
class Text2 extends StatelessWidget {
const Text2({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text3();
}
}
class Text3 extends StatefulWidget {
const Text3({Key? key}) : super(key: key);
@override
State<Text3> createState() => _Text3State();
}
class _Text3State extends State<Text3> {
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
print('_Text3State didChangeDependencies');
}
@override
Widget build(BuildContext context) {
return Container(
child: Text(CountData.of(context)!.countData.toString()),
);
}
}
class CountData extends InheritedWidget {
final int countData;
const CountData({required this.countData, required Widget childWidget})
: super(child: childWidget);
static CountData? of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<CountData>();
}
@override
bool updateShouldNotify(covariant CountData oldWidget) {
print(oldWidget.countData);
print(countData);
return oldWidget.countData == countData;
}
}
Flutter的数据共享
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- InheritedWidget 创建继承自 InheritedWidget 的类 需要共享的widget Prov...
- 1. 前言 InheritedWidget是 Flutter 中非常重要的一个功能型组件,它提供了一种在 widg...
- InheritedWidget 提供了数据在 widget 中从上到下传递共享的方式;在根 widget 中共享一...
- 简介 业务开发中经常会碰到这样的情况,多个Widget需要同步同一份全局数据,比如点赞数、评论数、夜间模式等等。在...