美文网首页
Flutter的数据共享

Flutter的数据共享

作者: CocoaJason | 来源:发表于2022-07-21 16:32 被阅读0次
    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的数据共享

          本文链接:https://www.haomeiwen.com/subject/npouirtx.html