Flutter-即使数据库中的数据已更新,也无法使futurebuilder重新加载数据

问题描述 投票:0回答:1

我对Flutter中的FutureBuilder有问题

这是我的代码:

@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错误吗?还是我在这里缺少什么?

任何帮助,谢谢:)

flutter mobile future
1个回答
0
投票

嘿,您找到此问题的解决方案了吗?因为我遇到类似的问题。

© www.soinside.com 2019 - 2024. All rights reserved.