flutter - 数据为空但不为空时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: []
解决方案
我建议您使用与您对应hasData
的AsyncSnapshot
snapshot
类的方法:
if (!snapshot.hasData) {
Navigator.pop(context)
}
我还建议您snapshot.connectionState
在访问数据之前检查道具,因为可能存在错误或者它可能仍在等待响应。
更新
现在您已经发布了 API 响应,条件snapshot.data == ''
将永远不会true
返回列表。您应该使用snapshot.data == []
或将其转换为列表并使用isEmpty
运算符。
推荐阅读
- spring-boot - p:PickList 在 Spring Boot 中自定义 JSF 转换器
- javascript - react ref在componentDidMount中返回未定义
- bootstrap-4 - 我无法让置顶导航栏与下一个元素引导程序 4 重叠
- jquery - 禁用右键单击 vimeo 播放器
- angular - 如何让这个函数等待一个 HTTP 请求
- python - Python在带有返回调用的函数下添加多重检查
- java - 使用java在谷歌驱动器中获取上传的文件名?
- reactjs - react-select的yup验证如何
- php - Laravel 5.6:如果字段存在且未更改,则跳过验证步骤。如果字段已更改,则为必填项 - 但不是唯一的
- python - 使用python查找8D向量的大小