• FLutter中inheritedwidget的使用


    import 'package:demoflutter/main_base2.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart' show rootBundle ;
    import 'package:dio/dio.dart';
    
    import 'dart:convert';
    import 'dart:async';
    
    import 'dart:io';
    
    
    
    void main() {
    
      runApp(MaterialApp(
          title: "material",
          theme: ThemeData(
            backgroundColor: Colors.red,
            primaryColor: Colors.blue,
            splashColor: Colors.transparent
          ),
          home: Scaffold(
              appBar: AppBar(
                title: Text("CodeText"),
              ),
              // body: MyApp2())));
              // body: MyGridCountDemo())));
              //  body: GridViewBuildDemo())));
              // body: HomeContent())));
              //    body: HomeContent2())));
              // body: MyHomePage3())));
              // body: HYStartRating(rating:1))));
              // body: showDashLine())));
              // body: MyApp())));
              // body: MovieListItem(MovieItem.fromMap({"":""})))));
        body: HYHomePage())));
    }
    
    
    class HYDataWidget extends InheritedWidget {
    
        final int counter;
    
        HYDataWidget( {this.counter, Widget child}): super(child: child);
    
        static HYDataWidget of(BuildContext context){
          return context.dependOnInheritedWidgetOfExactType();
        }
    
      @override
      bool updateShouldNotify(HYDataWidget oldWidget) {
        // TODO: implement updateShouldNotify
        return oldWidget.counter !=this.counter;
    
        }
    
    }
    
    
    
    
    class HYHomePage extends StatefulWidget {
      @override
      _HYHomePageState createState() => _HYHomePageState();
    }
    class _HYHomePageState extends State {
      int data = 100;
      @override
      Widget build(BuildContext context) {
          return Scaffold(
              appBar: AppBar(title: Text("inheritedWidget"),),
              body: HYDataWidget(
                counter: data,
                child: Center(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      HYSHowData01()
                    ],
                  ),
                ),
              ),
            floatingActionButton: FloatingActionButton(
              child: Icon(Icons.add),
              onPressed: (){
                setState(() {
                  data++;
                });
    
              },
            ),
          );
      }
    
    }
    
    
    class ShowWidget extends StatefulWidget {
      @override
      _stateShowWidget createState() => _stateShowWidget();
    }
    
    
    class _stateShowWidget extends State{
      int count=0;
      @override
      Widget build(BuildContext context) {
        return Center(
           child: HYDataWidget(
             counter: count,
             child: FloatingActionButton(
               child:Text("sa"),
               onPressed: (){
                 setState(() {
                   ++count;
                 });
               },
             ),
           ) ,
        );
      }
    }
    
    // class HYSHowData01 extends StatelessWidget {
    //
    //   @override
    //   Widget build(BuildContext context){
    //     // return Container();
    //     int counter = HYDataWidget.of(context).counter;
    //     return Card(
    //       color: Colors.red,
    //       child: Text('当前计数1111:${counter}'),
    //     );
    //   }
    //
    //
    // }
    
    
    class HYSHowData01 extends StatefulWidget {
    
      @override
      _stateHYSHowData01 createState() => _stateHYSHowData01();
    
    }
    
    class _stateHYSHowData01 extends State {
      @override
      void didChangeDependencies() {
        // TODO: implement didChangeDependencies
        super.didChangeDependencies();
        int counter = HYDataWidget.of(context).counter;
        print("改变啊   aa${counter}");
    
      }
      @override
      Widget build(BuildContext context){
        // return Container();
        int counter = HYDataWidget.of(context).counter;
        return Card(
          color: Colors.red,
          child: Text('当前计数1111:${counter}'),
        );
      }
    }
    
    class HYSHowData02 extends StatelessWidget {
      @override
      Widget build(BuildContext context){
        // return Container();
        return Card(
          color: Colors.red,
          child: Text('当前计数:100'),
        );
      }
    
    
    }
  • 相关阅读:
    Java保留关键字简介说明
    LeetCode09——回文数
    Acwing第57场周赛
    2024采用JSP的酒店客房管理系统源代码+毕业设计论文+开题报告+答辩PPT
    抗击疫情静态HTML网页作业作品 大学生抗疫感动专题页设计制作成品 简单DIV CSS布局网站
    从菜鸟到大师:编程必须遵循的三个基本原则
    生产者消费者模型
    18、!!!使用最多Mybatis获取参数值的情况4(mapper接口方法参数为实体类类型参数)
    前端 | Ajax&Axios模块
    1341. 电影评分
  • 原文地址:https://blog.csdn.net/BianHuanShiZhe/article/details/128052608