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("點擊數(shù)字增加"))
],
),
),
));
}
}
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的數(shù)據(jù)共享
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內容
- InheritedWidget 創(chuàng)建繼承自 InheritedWidget 的類 需要共享的widget Prov...
- 1. 前言 InheritedWidget是 Flutter 中非常重要的一個功能型組件,它提供了一種在 widg...
- InheritedWidget 提供了數(shù)據(jù)在 widget 中從上到下傳遞共享的方式;在根 widget 中共享一...
- 在開發(fā)中我們經(jīng)常會用到InheritedWidget,可以在它的任意子widget獲取到數(shù)據(jù)< 英 [?n'he...
- 簡介 業(yè)務開發(fā)中經(jīng)常會碰到這樣的情況,多個Widget需要同步同一份全局數(shù)據(jù),比如點贊數(shù)、評論數(shù)、夜間模式等等。在...