Flutter ValueNotifier监听状态

使用ValueNotifier可以实现状态管理当状态

ValueNotifier<bool> isMailListClicked = ValueNotifier(false); 
ListTile(
 onTap: () {
     gloabal.isMailListClicked.value = true;
}
)
Expanded(
                      child: ValueListenableBuilder(
                        valueListenable: gloabal.isMailListClicked,
                        builder: (BuildContext context, dynamic value,
                            Widget? child) {
                          return gloabal.isMailListClicked.value
                              ? ListView(children: [
                                  Text()
                                ])
                              : Container();
                        },
                      ),
                    ),

  当监听对象为非基础数据类型时,例如监听Map时不同通过直接改变map内数据的值的方式实现界面的刷新,而要通过新建对象再赋值的方式来出发监听。

//新建一个监听
ValueNotifier<Map<int, bool>> recIsClicked = ValueNotifier({0: false});

recIsClicked.value[0]=true; //虽然对象内容改变了,但并不能出发监听

//新建对象再赋值
Map<int,bool> temp={0:true};
recIsClicked.value=temp;  //这种方式可以触发监听

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值