У меня проблема с FutureBuilder во Flutter
Это мой код:
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// Load PRODUCT from database
_product = Product.loadProduct(widget.productID);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
setState(() {
_product = Product.loadProduct(widget.productID);
});
}
}
@override
Widget build(BuildContext context) {
Logger().d('build called');
setState(() {
_product = Product.loadProduct(widget.productID);
Logger().d('Product set');
});
final futureBuilder = FutureBuilder<Product>(future: Product.loadProduct(widget.productID), builder: (BuildContext context, AsyncSnapshot<Product> snapshot) {
Logger().d('snapshot.hasData = ${snapshot.hasData}');
if (snapshot.hasData) {
Logger().d('Product has data');
var product = snapshot.data;
Logger().d('Best bid price = ${product.bestBidPrice}');
final imageUri = Uri(
scheme: ServerAPI.SCHEME,
host: ServerAPI.HOST,
port: ServerAPI.PORT,
path: ServerAPI.API_PATH + product.imageURL);
final imageUrl = imageUri.toString();
return Stack(); ***(this is where I build all my widgets using the data)***
} else if (snapshot.hasError) {
return Center(
child: Icon(Icons.error),
);
}
return Center(
child: CircularProgressIndicator(),
);
},);
return Scaffold(
appBar: AppBar(title: Text('test')),
body: futureBuilder
);
}
Проблема в том, что я не могу получить новые данные о цене предложения после возвращения из страницу торгов. Я уверен, что данные были обновлены, потому что, когда я возвращаюсь на главную страницу и снова захожу, она показывает новую ставку. Я хочу обновить страницу, когда пользователи вернутся со страницы ставок.
Я пробовал setState, didChangeAppLifecycleState, но безрезультатно, он по-прежнему не работает: (
Я неправильно использую FutureBuilder? Или мне что-то здесь не хватает?
Любые помощь будет признательна, спасибо :)