在flutter中,我有一个listView,它从列表中获取它的项目,并且该列表是从互联网下载的,每当将新项目添加到列表中时,我都会有一个事件告诉应用程序添加了新项目,为此我使用notifyListners () 刷新列表视图以显示新项目, 我使用此方法的问题是,有时列表中存在大尺寸的项目,并在新项目出现时刷新所有项目,这确实会减慢应用程序的速度,而且用户体验非常糟糕,我想做的是获取列表一次,仅通知应用程序有关新项目的信息
ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
// You can add more customization here
);
},
),
)
您可以使用 ListView.builder 代替列表视图。
ListView.builder 是一个方便的小部件,用于高效创建可滚动的小部件列表。它只为当前视图中的项目创建小部件,这使得它对于大型列表非常有效。
您只能更新新添加的项目
class ItemProvider with ChangeNotifier {
List<Item> _items = [];
void addItem(Item newItem) {
_items.add(newItem);
notifyListeners();
}
List<Item> getItems() {
return _items;
}
}
在列表视图中,只有 itemwidget 会被重建,而不是所有列表
ListView.builder(
itemCount: provider.getItems().length,
itemBuilder: (context, index) {
return ItemWidget(item: provider.getItems()[index]);
},
);