List 如果网格列表在Flatter中为空,请插入文本()

List 如果网格列表在Flatter中为空,请插入文本(),list,flutter,grid,future,List,Flutter,Grid,Future,我正在开发一个颤振应用程序,在我的Main路线中,我有一个网格列表,由数据库检索的元素填充。 当网格为空时,我想布局一条Text()消息,或者类似的东西, 永久。 我用 list() { return Container( child: FutureBuilder( future: pets, builder: (context, snapshot) { if (!snapshot.hasData || snapshot.da

我正在开发一个颤振应用程序,在我的
Main
路线中,我有一个
网格列表
,由数据库检索的元素填充。 当网格为空时,我想布局一条
Text()
消息,或者类似的东西, 永久。 我用

list() {
   return Container(
      child: FutureBuilder(
        future: pets,
        builder: (context, snapshot) {
          if (!snapshot.hasData || snapshot.data == null) {
            return emptyGrid();
          }
          else
          return imageGrid(snapshot.data);
        },
      ),
    );
  }
emptyGrid在哪里

Container emptyGrid() {
    return Container(
      child: Center(
        child: Column(
          children: <Widget>[
            Text("No Data Found")
          ],
        ),
      ),
    );
  }
Container emptyGrid(){
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
问题是,
emptyGrid
布局正确,但之后立即消失。

尝试以下操作:

Widget build(BuildContext context) {
    return new Container(
      child: new FutureBuilder(
          future: FirebaseDatabase.instance.reference().child("table").once(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              if (snapshot.data!=null) {
                return new Column (
                  children: imageGrid(snapshot.data),
                );
              } else {
                return Container(
                  child: Center(
                    child: Column(
                      children: <Widget>[
                        Text("No Data Found")
                      ],
                    ),
                  ),
                );
              }
            }
          }
        )
      );
  }
小部件构建(构建上下文){
退回新货柜(
孩子:新未来建设者(
future:FirebaseDatabase.instance.reference().child(“表”).once(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
if(snapshot.data!=null){
返回新列(
子项:imageGrid(snapshot.data),
);
}否则{
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
}
}
)
);
}
试试这个:

Widget build(BuildContext context) {
    return new Container(
      child: new FutureBuilder(
          future: FirebaseDatabase.instance.reference().child("table").once(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              if (snapshot.data!=null) {
                return new Column (
                  children: imageGrid(snapshot.data),
                );
              } else {
                return Container(
                  child: Center(
                    child: Column(
                      children: <Widget>[
                        Text("No Data Found")
                      ],
                    ),
                  ),
                );
              }
            }
          }
        )
      );
  }
小部件构建(构建上下文){
退回新货柜(
孩子:新未来建设者(
future:FirebaseDatabase.instance.reference().child(“表”).once(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasData){
if(snapshot.data!=null){
返回新列(
子项:imageGrid(snapshot.data),
);
}否则{
返回容器(
儿童:中心(
子:列(
儿童:[
文本(“未找到数据”)
],
),
),
);
}
}
}
)
);
}

您需要修改您的
列表()
,如下所示:

您需要检查列表长度是否为零

list() {
  return Container(
    child: FutureBuilder(
      future: pets,
      builder: (context, snapshot) {
        if (!snapshot.hasData || snapshot.data == null) {
          return Text('Loading.....');
        } else if (snapshot.data.length == 0) {
          return emptyGrid();
        } else {
          return imageGrid(snapshot.data);
        }
      },
    ),
  );
}

您需要修改
列表()
,如下所示:

您需要检查列表长度是否为零

list() {
  return Container(
    child: FutureBuilder(
      future: pets,
      builder: (context, snapshot) {
        if (!snapshot.hasData || snapshot.data == null) {
          return Text('Loading.....');
        } else if (snapshot.data.length == 0) {
          return emptyGrid();
        } else {
          return imageGrid(snapshot.data);
        }
      },
    ),
  );
}

听起来你的数据库正在返回数据。您打印出快照的值了吗?您必须在
小部件构建
method@EricDuffett我打印。我的数据库是空的。“没有数据”被列出来,但就在那一秒钟,你的数据库似乎又回来了数据。您打印出快照的值了吗?您必须在
小部件构建
method@EricDuffett我打印。我的数据库是空的。“没有数据”的布局,但只是一秒钟,我把它放在一个小部件,但问题再次出现!与之前相同:文本(“未找到数据”)仅显示一秒钟,不会保留在屏幕上。您在构建方法中尝试过上述代码吗?然后屏幕上会显示什么?是的。显示“未找到数据”一秒钟,然后消失。我把它放在一个小部件中,但问题再次出现!与之前相同:文本(“未找到数据”)仅显示一秒钟,不会保留在屏幕上。您在构建方法中尝试过上述代码吗?然后屏幕上会显示什么?是的。显示“未找到数据”一秒钟,然后消失。