Flutter - не удается заставить futurebuilder перезагрузить данные, даже если данные обновляются в базе данных. - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема с 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? Или мне что-то здесь не хватает?

Любые помощь будет признательна, спасибо :)

...