如果 Flutter 中的网格列表为空,则插入一个 Text()

Insert a Text() if a Grid List is Empty in Flutter

我正在开发一个 Flutter 应用程序,在我的 Main 路线中,我有一个 Grid List,填充了由数据库检索的元素。 当 Grid 为空时,我想布局一个 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")
          ],
        ),
      ),
    );
  }

问题是,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")
                      ],
                    ),
                  ),
                );
              }
            }
          }
        )
      );
  }

您需要修改您的 list() 如下:

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

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);
        }
      },
    ),
  );
}