<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 推薦閱讀 [《Flutter實戰》7.2 數據共享(InheritedWidget)](https://book.flutterchina.club/chapter7/inherited_widget.html) [Flutter知識點: InheritedWidget](https://www.jianshu.com/p/387e2454d590) [Flutter狀態管理(1)——InheritedWidget](https://cloud.tencent.com/developer/article/1506834) ## 狀態管理 Flutter的狀態管理分為兩種:局部狀態和全局狀態。 * 局部狀態:就是一個StatefulWidget可以搞定的;其他Widget不需要知道你的狀態,你也不需要依賴其他Widget的狀態 * 全局狀態:整個app很多頁面都需要用到的狀態,比如是否登錄了,用戶名、用戶id等; Flutter狀態管理系列主要指的是全局狀態的管理,主要介紹的幾種實現方式有: * InheritedWidget * StreamBuilder * Provider 簡單來說,InheritedWidget下面的Widget都可以獲取到該Widget持有的狀態。 Theme這個源碼大家可以去看一下 ,對理解 InheritedWidget會有比較大的幫助 ## Demo ~~~ import 'package:flutter/material.dart'; class InheritedOneData{ int number = 1; @override bool operator ==(other) { return number == (other as InheritedOneData).number; } } class InheritedWidgetOne extends InheritedWidget { final InheritedOneData data; InheritedWidgetOne({@required this.data, Widget child}) : super(child: child); static InheritedWidgetOne of(BuildContext context) { return context.inheritFromWidgetOfExactType(InheritedWidgetOne); } @override bool updateShouldNotify(InheritedWidgetOne oldWidget) { return oldWidget.data != data; } } class InheritedWidgetDemo extends StatelessWidget { @override Widget build(BuildContext context) { Scaffold scaffold = Scaffold( appBar: AppBar( title: new Text("ScrollDemoPage"), ), body: new Container( child: new ContentView(), ), ); return new InheritedWidgetOne( data: new InheritedOneData(), child: scaffold, ); } } class ContentView extends StatelessWidget { @override Widget build(BuildContext context) { return new Column( children: <Widget>[ new ShowView(), new AddView(), ], ); } } class ShowView extends StatelessWidget { @override Widget build(BuildContext context) { InheritedOneData data = InheritedWidgetOne.of(context).data; return new Text("${data.number}"); } } class AddView extends StatefulWidget { @override State<AddView> createState() { return new AddViewViewState(); } } class AddViewViewState extends State<AddView> { @override Widget build(BuildContext context) { return new RaisedButton(onPressed: () { setState(() { InheritedOneData data = InheritedWidgetOne.of(context).data; data.number ++ ; }); }, child: Text("add")); } } ~~~ 其實核心方法就兩個 * inheritFromWidgetOfExactType:通過子widget可以通過BuildContext.inheritFromWidgetOfExactType(InheritedWidget)獲得到InheritedWidget的實例,從而隨時隨地獲取全局狀態的值 * updateShouldNotify
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看