- 定义
var listNotifier = ValueNotifier<List<String>>([]);
- 监听
@override
void initState() {
super.initState();
listNotifier.addListener(() {
print('listNotifier = ${listNotifier.value}');
});
}
- 赋值:方法1,无法触发监听
listNotifier.value.add(Random().nextInt(100).toString());
print(listNotifier.value.hashCode);
- 赋值:方法2,可以触发监听
原理与iOS的kvo原理类似.list添加元素,未改变地址,所以无法触发监听,利用深copy 重新赋值,就触发监听了
/// 正常的赋值
listNotifier.value.add(Random().nextInt(100).toString());
///重点,进行深copy
listNotifier.value = [...listNotifier.value];
print(listNotifier.value.hashCode);
网友评论