首页 > 解决方案 > 数据为空但不为空时Flutter Screen Auto Pop off

问题描述

所以我试图制作一个屏幕,当 api 的返回为空时它将关闭

这是我一直在尝试的代码

FutureBuilder(
              future: GetOrga(),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if(snapshot.data == null){
                  return Container(
                      child: Center(
                          child: CircularProgressIndicator(
                            color: Colors.red,
                          )
                      )
                  );
                }
                return ListView.builder(
                  itemCount: snapshot.data == null ? 0 : snapshot.data.length,
                  itemBuilder: (BuildContext context, int index) {
                    if (snapshot.data == ""){
                      Navigator.pop(context);
                    }
                    return GestureDetector()

但它似乎不起作用,它加载并且加载完成后它只显示空屏幕。

这是颤振输出

flutter: []

标签: flutterdart

解决方案


我建议您使用与您对应hasDataAsyncSnapshotsnapshot类的方法:

if (!snapshot.hasData) {
  Navigator.pop(context)
}

我还建议您snapshot.connectionState在访问数据之前检查道具,因为可能存在错误或者它可能仍在等待响应。

更新

现在您已经发布了 API 响应,条件snapshot.data == ''将永远不会true返回列表。您应该使用snapshot.data == []或将其转换为列表并使用isEmpty运算符。


推荐阅读