Flutter的数据共享

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 createState() => _Text3State();
}

class _Text3State extends State {
  @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();
  }

  @override
  bool updateShouldNotify(covariant CountData oldWidget) {
    print(oldWidget.countData);
    print(countData);
    return oldWidget.countData == countData;
  }
}

你可能感兴趣的:(Flutter的数据共享)