flutter - Flutter 如何显示类中的数据
问题描述
我创建了一个这样的类
class Collection with ChangeNotifier {
List<Items> _items = [];
void addData(Items day) {
print(day.name);
print(day.id);
_items.add(day);
print(_items);
notifyListeners();
}
}
class Items {
String name;
String comments;
int id;
Items({required this.name, required this.comments, required this.id});
}
我像这样在 _items 中插入数据
Collection().addData(Items(name: "a", comments: "sda", id: 12));
我可以在 addData 函数上正确看到它的打印值
但是当我在我的小部件中显示它时它没有显示
ListView.builder(
itemCount: Collection()._items.length,
itemBuilder: (BuildContext context, int index) {
print(Collection()._items.length);
return Text('name ${Collection()._items[index].name} id ${Collection()._items[index].id}');
})
解决方案
每次调用Collection()
构造函数时,都会创建一个不同的Collection
类实例。您需要使用创建一个实例
final collection = Collection();
然后在您的构建器中使用该对象。
使用final
比更好var
,因为这样可以确保collection
对象不会被重新分配给新实例。
推荐阅读
- git - 我最近的提交工作。我当前的工作集有一个错误。如何找出导致错误的更改?
- c++ - 面向数据的设计;如何优化 C++ 中的数据结构以提高性能?
- ios - SKReceiptRefreshRequest 每次都询问密码
- qt - QRemoteObjectRegistryHost 和 QRemoteObjectHost 有什么不同?
- android - android代码选择一个文件,然后通过whatsapp分享
- html - 如何将管道添加到Angular中的输入字段
- node.js - 如何将 RTMP 流放入 node.js 中的变量
- c++ - STL 是否为其标头指定标头保护?
- matlab - 关于在 Matlab 中绘图
- selenium - 我如何对 json 数组响应使用逻辑 OR