【问题标题】:how to handle FutureBuilder when no value in database? flutter数据库中没有值时如何处理 FutureBuilder?扑
【发布时间】:2022-01-03 11:26:12
【问题描述】:

我正在尝试创建一个使用未来构建器的屏幕,当数据库中有数据时它工作得很好,但是当没有找到数据时它显示错误:

FormatException:输入意外结束(在字符 2 处)

这是我的代码:

 FutureBuilder(
            future: allCars(),
            builder: (context, AsyncSnapshot snapshot){
              if(!snapshot.hasError){
  
                    return Center(child: Text("No Cars"));
                }

              else {
                if (snapshot.hasError) print(snapshot.error);
                return snapshot.hasData ? ListView.builder(
                    itemCount: snapshot.data!.length,
                    itemBuilder: (context, index) {
                      List list = snapshot.data;
                      return SingleChildScrollView()
                    }

它必须在屏幕上显示:Text("No Cars"))。但是当没有找到数据时它会不断重新加载? 提前致谢

【问题讨论】:

  • 当你的Future函数没有数据时返回null?
  • 我更喜欢FutureBuilder<futureDataType?>(,你可以这样做!snapshot.hasData

标签: flutter flutter-futurebuilder


【解决方案1】:

使用 if(snapshot.hasData) 检查是否有数据。

    FutureBuilder(
                future: allCars(),
                builder: (context, AsyncSnapshot snapshot){
                  if(!snapshot.error){
      
                        return Center(child: Text("No Cars"));
                    }
    
                  else {
                    if (snapshot.hasdata) {

                    return  ListView.builder(
                        itemCount: snapshot.data!.length,
                        itemBuilder: (context, index) {
                          List list = snapshot.data;
                          return SingleChildScrollView()
                        }else{
return Text("No cars")}

【讨论】:

  • 工作完美感谢@Nbn
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2014-01-04
  • 1970-01-01
  • 2015-02-14
  • 2019-07-22
  • 1970-01-01
  • 2020-02-29
相关资源
最近更新 更多