【发布时间】:2021-06-07 03:31:10
【问题描述】:
我有 2 个页面,每个页面在 initState 中都有相同的函数,返回一个列表。
第一个页面有常规功能,第二个页面有相同的功能,但带有返回过滤列表的过滤器。
问题是当我按下第二页中的“后退按钮”并返回第一页时,我得到的是过滤列表而不是常规列表。
在转到第一页之前如何“清除”第二页中的数据?
功能:
Future fetchProducts({flag = false}) {
return http
.get(
'MyAddress')
.then<Null>((http.Response response) {
final Map<String, dynamic> listData = json.decode(response.body);
listData.forEach((String id, dynamic fetchedData) {
final Product product = Product(
id: id,
address: fetchedData['address'],
image: fetchedData['imageUrl'],
);
fetchedData.add(product);
});
_product = flag
? fetchedData.where((Product product) {
return product.userId == 1;
}).toList()
: fetchedData;
});
}
【问题讨论】:
-
请在您的帖子中添加一些代码。特别是关于如何将列表从一个页面传递到另一个页面。
-
@George 我更新了问题
-
我看到
fetchedData变量的双重阴影声明。我假设在forEach闭包中有一个全局List<...> fetchedData;变量和dynamic fetchedData。我相信你应该重命名一个。 -
至于问题中描述的问题-我仍然不清楚如何将变量从一个屏幕传递到另一个屏幕。我看不出这个函数与实际问题有什么关系。
-
这正是我的观点,我不会将变量从一个页面传递到另一个页面。 @George 您可以在函数末尾看到 if 语句,具体取决于标志。如果标志为真 - 过滤列表,如果 flas 为假 - 常规列表。问题是当我从常规列表页面导航到过滤列表页面时,我得到了过滤列表,但是当我回到常规列表页面时,我仍然得到过滤列表