Flutter Future:构建函数返回 null
Posted
技术标签:
【中文标题】Flutter Future:构建函数返回 null【英文标题】:Flutter Future:A build function returned null 【发布时间】:2019-07-31 04:21:27 【问题描述】:我想将数据从 firebase 检索到未来的 builder。我为此使用此功能。
Future getAllData() async
ReseviorDataModel resModel;
DatabaseReference ref = FirebaseDatabase.instance.reference();
DataSnapshot childed =await
ref.child("Reservoir/$widget.placeName").once();
Map<dynamic, dynamic> values;
values = childed.value;
resModel = ReseviorDataModel.customConstrcutor(values["sensor1"],
values["sensor2"], values["sensor3"]);
return resModel;
我在未来的构建器中调用此函数。
child: FutureBuilder(
future: getAllData(),
builder: (context, snapshot)
Center(child: Text(snapshot.data));
但它一直抛出这个“构建函数返回 null”。错误。我无法弄清楚这里有什么问题
【问题讨论】:
用return Center
替换Center
成功了。高度赞赏
当然,欢迎您
@pskink 请写下来作为答案,否则其他人可能会出现并写下相同的内容。
【参考方案1】:
要清除这里的内容,您的构建器始终必须返回一个要显示的小部件。如错误消息所述,您永远不能返回 null。
在这种情况下的问题是 OP 没有从构建器返回任何东西,所以只需添加一个返回就可以了。
使用 FutureBuilder 时要记住的一些事项。始终检查 snapshot.hasData 属性并相应地返回 UI。这将防止 snapshot.data 为 null 的情况,从而导致在您的 Widget 中抛出新的错误,并采用 null。
例子:
child: FutureBuilder(
future: getAllData(),
builder: (context, snapshot)
if(!snapshot.hasData)
// show loading while waiting for real data
return CircularProgressIndicator();
return Center(child: Text(snapshot.data));
【讨论】:
以上是关于Flutter Future:构建函数返回 null的主要内容,如果未能解决你的问题,请参考以下文章
Flutter/Dart - 调用一个 Future<String> ...但只需要返回一个 String 的函数
Flutter进阶篇(4)-- Flutter的Future异步详解
将 Future 类型化结果从函数分配给 Flutter Widget 中的变量
如何在 Flutter 中基于 Future 结果构建 Stream?
我想从Future中获取一个整数值,在flutter和firestore中打印Instance of Future'动态'函数