flutter - 为什么 snapshot.data 在 FutureBuilder 中返回 null?
问题描述
void main() {
FutureBuilder<bool>(
future: f(),
builder: (_, AsyncSnapshot<bool> snapshot) {
bool data = snapshot.data; // Error
return Container();
},
);
}
Future<bool> f() async => true;
我bool
在所有地方都使用过,因此我snapshot.data
也应该返回 abool
但它返回了bool?
,为什么会这样?
解决方案
如果你看到数据的实现,它是:
T? get data;
数据返回类型为T?
而不是的原因T
是错误。如果你的返回错误怎么办Future
,在这种情况下你会收到一个空值。你应该像这样使用它:
FutureBuilder<bool>(
future: f(),
builder: (_, AsyncSnapshot<bool> snapshot) {
if (!snapshot.hasError) {
bool data = snapshot.data!;
}
return Container();
},
)
推荐阅读
- sql - Access 2016 选择查询重复字段值
- asp.net-mvc - ASP.NET MVC 不提供 MP3 文件
- android - 在我的代码中找不到导致 R 错误的方法 android
- php - 将 API 参数传递给 url laravel/guzzle
- php - PHP 警告:我的脚本中为 foreach() 提供的参数无效
- angularjs - 无法在不将直接连接设置为 false 的情况下运行 Firefox 量角器
- javascript - 从 javascript 函数中收集输入名称
- sql - 从不同的表填充表
- python - 使用 strptime 在 Python 中将字符串转换为日期时间
- java - LRU缓存实现思路