【问题标题】:Flutter: When the snapshot is empty the widget disappearsFlutter:当快照为空时,小部件消失
【发布时间】:2020-02-19 01:18:38
【问题描述】:

我正在尝试构建一个搜索列表,该列表工作正常,但如果结果为空,我不需要显示任何数据。我尝试了以下代码,但小部件会保持一秒钟然后消失

FutureBuilder(
                    future: getSearchedProducts(widget.searchString),
                    builder: (BuildContext context, AsyncSnapshot snapshot) {
                      if (!snapshot.hasData) {
                        return Center(
                          child: Container(
                            child: Text('No Data Found.'),
                          ),
                        );
                      } else {
                        return ListView.builder(
                            shrinkWrap: true,
                            itemCount: searchResult.length,
                            scrollDirection: Axis.vertical,
                            itemBuilder: (context, index) {

                                  return Card(
                                    child: ListTile(
                                      leading: Image.network(searchResult[index].proThumbnail),
                                      title: Text(searchResult[index].proName),
                                      onTap: () {
                                        print(searchResult[index].proName);
                                        Navigator.push(context, MaterialPageRoute(builder: (context) {
                                          return ProductPage(prodid: searchResult[index].proId);
                                        }));
                                      },
                                    ),
                                  );


                            });
                      }
                    })

谁能帮我解决这个问题。 提前谢谢你。

【问题讨论】:

    标签: flutter flutter-layout snapshot no-data


    【解决方案1】:

    我只是写了如下代码,它可以工作。

     FutureBuilder(
                        future: getSearchedProducts(widget.searchString),
                        builder: (BuildContext context, AsyncSnapshot snapshot) {
    
                          print('length of list ${searchResult.length}');
    
                          if (searchResult.length==0) {
                            return Center(
                              child: Text('No data'),
                            );
                          }
                          else if (!snapshot.hasData) {
                            return Center(
                                child: CircularProgressIndicator(),
                            );
                          }
                          else {
                            return ListView.builder(
                                shrinkWrap: true,
                                itemCount: searchResult.length,
                                scrollDirection: Axis.vertical,
                                itemBuilder: (context, index) {
    
                                      return Card(
                                        child: ListTile(
                                          leading: Image.network(searchResult[index].proThumbnail),
                                          title: Text(searchResult[index].proName),
                                          onTap: () {
                                            print(searchResult[index].proName);
                                            Navigator.push(context, MaterialPageRoute(builder: (context) {
                                              return ProductPage(prodid: searchResult[index].proId);
                                            }));
                                          },
                                        ),
                                      );
    
                                });
    
    
    
                          }
                        }),
    
    

    【讨论】:

      【解决方案2】:

      Else 部分之前的代码中 - return ListView.builder- 添加以下代码。

       ...
       else {
       if (searchResult.length == 0) 
                {
                  return Center(child: const Text('No Date'));
                }
       return ListView.builder .....
      

      【讨论】:

      • beforeif 条件 - 尝试 - print(searchResult.length); 当没有数据时打印 0。
      猜你喜欢
      • 2020-04-12
      • 2020-03-19
      • 2022-11-19
      • 1970-01-01
      • 2020-07-19
      • 2020-05-28
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多