我有一个在ListView中加载购物车项目的屏幕。
Expanded(
child: RefreshIndicator(
onRefresh: refresh,
child: Container(
child: FutureBuilder(
future: loadData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<dynamic>? filteredList = snapshot.data as List;
...
使用函数loadData()
加载数据
Future<List<LineaCesta>> loadData() async {
await fetchLineasCesta(idCesta);
return fetchLineasCesta(idCesta);
}
然后,在项目卡内,有一些按钮来添加或删除产品数量。
下面是添加一个新示例的案例:
onPressed: () async {
//añadir uno maas
final prefs = await SharedPreferences.getInstance();
idCesta = prefs.getString("cesta_id")!;
checkExistenciaCestaPoner( idCesta!,lineaCesta.producto,lineaCesta.precio,context);
print( "refrescando despues de añadir item");
});
});
}
然后调用其他函数,这些函数最后再次调用函数loadData()
。
问题是调用loadData后,所有更改都不会更新。
我需要离开屏幕并再次加载它以更新所有数据。
编辑:
Future<List<LineaCesta>> fetchLineasCesta(String cesta) async {
String url = Constantes().URLProyecto+Constantes().APICarpeta+"get_lineas_cesta.php?cesta="+cesta;
final response = await http.get(Uri.parse(url));
return lineaCestaFromJson(response.body);
}
1条答案
按热度按时间brccelvz1#
当你想刷新FutureBuilder时,重新分配future变量。为此我更愿意为FutureBuilder的
future
创建一个单独的变量。并使用
现在要更新,请重新分配
loadDateFuture
您可以选中Randal L. Schwartz's video