flutter - valuenotifier 在更新列表时未更新小部件
问题描述
import 'package:flutter/material.dart';
import '../../Data/Globalvariable.dart' as global;
class MenuBar extends StatefulWidget {
final key = UniqueKey();
// final pin;
// MenuBar({this.pin='112'});
@override
_MenuBarState createState() {
return _MenuBarState();
}
}
class _MenuBarState extends State<MenuBar> {
ValueNotifier<List<String>> st = ValueNotifier(global.pincode);
Widget total() {
return ListView.builder(
itemCount: global.pincode.length,
itemBuilder: (context, index) {
final item = global.pincode[index];
return Dismissible(
key: UniqueKey(),
onDismissed: (direction) {
setState(() {
global.pincode.removeAt(index);
});
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('$item Removed')));
},
background: Container(color: Colors.red),
child: ListTile(
title: Text(item),
),
);
},
);
}
@override
Widget build(BuildContext context) {
return ValueListenableBuilder(
builder: (context, n, menu) {
print(global.pincode);
return total();
},
child: total(),
valueListenable: st,
);
}
}
这是我的主文件我有一个全局文件,我所有的工作变量都在那里
Globalvariable.dart
library project.globals;
List<String> pincode = ['Select Pin','110084','110088'];
现在当我将数据添加到 pincode valuenotifier 应该听它并自动更新小部件但它没有这样做我验证了使用调试控制台它在我调用 setstate 时得到更新,这没问题,但我想在添加数据时更新小部件我的清单
这是为了证明我上面所说的 wigdet 在删除时更新,但不是在添加时更新
解决方案
如果您使用ValueNotifier
的是列表,则应st
使用追加到该列表,除非您将该全局列表设为 a ,否则st.value.add()
修改global.pincode
列表不会反映ValueNotifier
。
因此,您将拥有st.value.add()
或在您的全局文件ValueNotifier<List<String>> pincode = ValueNotifier(<String>[...]);
中使用 avalueListenable: global.pincode
和修改global.pincode.value.xyz
推荐阅读
- javascript - react-native run-ios 需要很长时间才能构建,有时永远不会
- python - “如何解决 openCV 的‘导入错误’?”
- pandas - Pandas DF 并在每个中找到用 NAN 填充的缺失列
- r - 在 dataframe() 中查找大于 5 的数字
- javascript - React - 组件在滚动时未正确更新
- python - 使用python在大型数据集中查找重复项
- docker - 将环境变量传递给容器不起作用
- python - 如何让 Praw Script 同时观看多个流
- neo4j - Neo4J 架构约束验证失败
- android - 即使没有释放相机,相机 takePicture() 也不会调用 onPictureTaken() 回调