美文网首页
Flutter 再讲ChangeNotifierProvider

Flutter 再讲ChangeNotifierProvider

作者: 代瑶 | 来源:发表于2020-12-26 10:52 被阅读0次
class MoreWorkBean extends ChangeNotifier {

  ///
  String buttonName = "查看更多";

  void setButtonName(String _name) {
    this.buttonName = _name;
    notifyListeners();
  }

  ///
  String buttonUpdateLabel = "刷新作品";

  void setButtonUpdateLabel(String _label) {
    this.buttonUpdateLabel = _label;
    notifyListeners();
  }
}

ChangeNotifierProvider<MoreWorkBean>.value(
      value: _bean,
      child:  Row(
              children: [
                FlatButton(
                    onPressed: () {
                      _bean.setButtonUpdateLabel("刷新") ;
                    },
                    child: Consumer<MoreWorkBean>(
                      builder: (BuildContext context, MoreWorkBean value, Widget child) {
                        print('触发标签');
                        return Text(value.buttonUpdateLabel);
                      },
                    )),
                FlatButton(
                  onPressed: () {
                    OneContext().pushNamed(
                      "MoreWork",
                      arguments: {"name": "余雄英", "bean": _bean},
                    ).then((value) => print('value ${value}'));
                  }, 
                  child: Consumer<MoreWorkBean>(
                    builder: (BuildContext context, MoreWorkBean value, Widget child) {
                     print('触发名字');
                       return Text(value.buttonName);
                    },
                 ),
                )
              ],
            )

这个时候点击刷新按钮后, 会在控制台打印 ‘触发标签’ 和 ‘触发名字’ , 但其实仅仅只有刷新按钮被触发, 不需要更改名字, 这时候需要用到 Selector

关于Selector的介绍

https://pub.dev/documentation/provider/latest/provider/Selector-class.html

需要Tuple配合使用

https://pub.dev/packages/tuple/install

我们将触发名字的Consumer 更换成Selector的写法后, 点击刷新就不会更改名字了.

Selector<MoreWorkBean, Tuple2<String, String>>(selector: (context, bean) {
                    return Tuple2(bean.buttonName, bean.buttonName);
                  }, builder: (BuildContext context, value, Widget child) {
                    print('触发名字');
                    return Text(value.item1);
                  }),

相关文章

  • Flutter 再讲ChangeNotifierProvider

    这个时候点击刷新按钮后, 会在控制台打印 ‘触发标签’ 和 ‘触发名字’ , 但其实仅仅只有刷新按钮被触发, 不...

  • Provider

    ChangeNotifierProvider

  • Flutter Provider实现原理

    Provider源码分析 ChangeNotifierProvider、ChangeNotifier、Consum...

  • Flutter状态管理-Provider的使用和源码解析

    使用 Provider的使用非常简单,通常使用ChangeNotifierProvider配合ChangeNoti...

  • Provider理解

    Provider通常使用ChangeNotifierProvider配合ChangeNotifier一起来实现状态...

  • 再讲沟通

    最近学习学了沟通的课程,你先要把自己介绍给对方,那么怎么样介绍可以让你在对方的心里面留下一席之地呢? 首先自我介绍...

  • 再讲《老王》

    上周公开课讲完,心中一直有个念头蠢蠢欲动——再讲一遍《老王》,了此心愿。上周听完课就把重难点确定好,以及学生可能存...

  • 见面再讲

    日结 Day 2019 . 04. 30 Day 9 日常任务 01 早起 6点打卡,又睡会去了,不知福最近是怎么...

  • 再讲一个,再讲一个!

    天已经很晚了,讲了一百个故事的妈妈口干舌燥,也困极了,可瞧瞧还是不肯睡。“再讲一个,再讲一个!”她兴奋地说。 妈妈...

  • 再讲个故事

    故事的主角性别女,可以叫她花花。 花花小的时候长得很乖很可爱,粉粉的像个洋娃娃。大人们喜欢逗她,常问她长大了要嫁什...

网友评论

      本文标题:Flutter 再讲ChangeNotifierProvider

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