我想知道如何更新
ListView.builder()
我在控制器类中有一个Map<String, dynamic>
列表。
当我添加元素 list.add({...}) 时:视图应该更新 查看课程代码:
child: Row(
children: [
Expanded(
flex: 5,
child: Text(
'Total',
textAlign: TextAlign.left,
style: context.bodyLarge.copyWith(
fontWeight: FontWeight.w500,
),
),
),
),
...
],
),
控制器类代码:
List<Map<String, dynamic>> reportData = [];
reportData.add({
'customer': '${data['customerCompanyName']}',
'qty': '${data['quantity']}',
'amount': '\$${data['subTotal']}',
'cogs': '\$${data['cogs']}',
'net': '\$$net',
'gain': '$gain%',
});
所以您看不到更改的原因是因为添加对象时状态没有更新。要解决这个问题,您可以将列表设置为使用 GetBuilder 的 Get Observable,并在向列表添加内容时更新它。
控制器类:
RxList<Map<String, dynamic>> reportData = [].obs
查看班级:
Obx(
() {
return ListView.builder(...);
}
);
使用此功能,您无需手动更新列表。这会持续观察列表并自动重建
Obx
内的小部件。
控制器类:
List<Map<String, dynamic>> reportData = [];
void updateList(){
reportData.add(...);
update(['List']);
}
查看班级: 在您的控制器中使用它,只需用
GetBuilder
小部件包装您的列表视图。
final controller = Get.find<YourController>();
GetBuilder(
init: controller,
id: 'List',
builder: (_){
return ListView.builder(...);
},
);
请务必保持
GetBuilder
中的更新字符串和id相同。