如果数据发生变化,Flutter 如何更新 Listview.builder
Flutter how to update Listview.builder if the data is changes
我正在 Flutter 中使用 ListView.builder。现在一切正常,我在回调方法中有以下代码行:
@override
void initState(){
items = new List();
for(int index = 0; index < dataList.length; index++){
items.add(...creating widget ..);
}
}
@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: dataList.length,
itemBuilder: (BuildContext context, int index) {
return Container(
width: width,
height: 160 ,
key: UniqueKey(),
padding: EdgeInsets.all(10),
child: items[index],
);
},
),
);
}
问题是当dataList的数据更新时,我应该如何实现这个列表才能使列表更新UI 如果数据值被更新、删除或位置更改。 StreamBuilder 是解决方案吗?
如果它不断变化则使用StreamBuilder
例如:https://bendyworks.com/blog/a-month-of-flutter-rendering-a-list-view-with-stream-builder
如果没有那么你可以使用FutureBuilder
例如:https://medium.com/nonstopio/flutter-future-builder-with-list-view-builder-d7212314e8c9
或者,
如果 dataList 在应用程序 (remove/update) 中发生变化,则调用 setState()
将更新 ListView
我正在 Flutter 中使用 ListView.builder。现在一切正常,我在回调方法中有以下代码行:
@override
void initState(){
items = new List();
for(int index = 0; index < dataList.length; index++){
items.add(...creating widget ..);
}
}
@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: dataList.length,
itemBuilder: (BuildContext context, int index) {
return Container(
width: width,
height: 160 ,
key: UniqueKey(),
padding: EdgeInsets.all(10),
child: items[index],
);
},
),
);
}
问题是当dataList的数据更新时,我应该如何实现这个列表才能使列表更新UI 如果数据值被更新、删除或位置更改。 StreamBuilder 是解决方案吗?
如果它不断变化则使用StreamBuilder
例如:https://bendyworks.com/blog/a-month-of-flutter-rendering-a-list-view-with-stream-builder
如果没有那么你可以使用FutureBuilder
例如:https://medium.com/nonstopio/flutter-future-builder-with-list-view-builder-d7212314e8c9
或者,
如果 dataList 在应用程序 (remove/update) 中发生变化,则调用 setState()
将更新 ListView