如何在加载数据时等待或重建消费者



在加载数据或等待加载数据时,如何重新加载Consumer。我正在使用Future Provider,当加载数据(currentPosition Fetched(时,一切都在重建自己,并在等待时使用circularProgress()。但消费者并不是在重建自己,也不能使用等待和消费者套餐。当我在调试时保存代码时,当它热重新加载时,一切都很好,但这不是一个解决方案。我希望消费者在获取数据时自动重新加载。我正在获取数据以在google_Maps_Flutter 上制作标记

body: (currentPosition != null)
? Consumer<List<Bar>>(builder: (_, places, child) {
List.generate(places.length, (index) async {
print(places.length);
print(index);
print(imageUrl(places[index].photoRef));
List<String> wordList = places[index].name.split(" ");
bitmapIcon = await customBitmapDescriptor(
imageUrl: imageUrl(places[index].photoRef),
title: wordList[0],
);
markers = markerService.getBarMarkers(
places,
markerIcon: this.bitmapIcon,
);
print(markers.isEmpty);
});

加载数据时使用setState((){});重建。在要重建的位置添加setState((){});,例如,如果要在位图中加载数据时重新加载Icon,则添加

bitmapIcon = await convertImageFileToCustomBitmapDescriptor(
imageUrl: imageUrl(places[index].photoRef),
title: wordList[0],
).then((value) {
setState(() {});
});

如果您想在标记中加载数据时重新加载,请使用

setState(() {
markers = markerService.getBarMarkers(
places,
markerIcon: this.bitmapIcon,
);
});

第一种情况

body: (currentPosition != null)
? Consumer<List<Bar>>(builder: (_, places, child) {
List.generate(places.length, (index) async {
print(places.length);
print(index);
print(imageUrl(places[index].photoRef));
List<String> wordList = places[index].name.split(" ");
bitmapIcon =await convertImageFileToCustomBitmapDescriptor(
imageUrl: imageUrl(places[index].photoRef),
title: wordList[0],
).then((value) {
setState(() {});
});
markers = markerService.getBarMarkers(
places,
markerIcon: this.bitmapIcon,
);
print(markers.isEmpty);
});

第二种情况

body: (currentPosition != null)
? Consumer<List<Bar>>(builder: (_, places, child) {
List.generate(places.length, (index) async {
print(places.length);
print(index);
print(imageUrl(places[index].photoRef));
List<String> wordList = places[index].name.split(" ");
bitmapIcon = await convertImageFileToCustomBitmapDescriptor(
imageUrl: imageUrl(places[index].photoRef),
title: wordList[0],
);
if(!isSet){
setState(() {
markers = markerService.getBarMarkers(
places,
markerIcon: this.bitmapIcon,
);
});
}
print(markers.isEmpty);
});

如果此解决方案有帮助,请竖起大拇指

使用notifyListener()可以更改使用者的状态。

下面是一个示例代码。如果你需要更多,请告诉我。

Consumer<DataProviderClass>(
builder: (context, portfolioProvider, _) {
print("state changed");

return RaisedButton(
child: Text("Press"),
onPressed : () =>  
Provider.of<DataProviderClass(context).fetchData(),
);
}
);




class DataProviderClass with ChangeNotifier{
fetchData(){
notifyListener();
}
}

相关内容

  • 没有找到相关文章

最新更新