使用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; //这种方式可以触发监听