编译flutter代码时遇到了问题,它抛出了以下错误:
生成FutureBuilder(脏,状态:_未来构建器状态#afa3f):生成函数返回null。
违规的小部件是:FutureBuilder生成函数决不能返回空值。
若要返回使构建小部件填满可用空间的空白空间,请返回"Container()"。若要返回占用尽可能少空间的空白空间,请返回"Container(width:0.0,高度:0.0)"。
代码如下:
home: Builder(builder: (context) {
return FutureBuilder(
future: DeeplinkConfig().initUniLinks(context),
builder: (_, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Container(width: 0.0, height: 0.0);
}
return snapshot.data as Widget;
},
);
}),
请,如果有人解释错误,并告诉我如何修复它,我将不胜感激。
2条答案
按热度按时间5sxhfpxr1#
此错误消息表示FutureBuilder的构建器回调返回null作为要显示的小部件。
构建器回调应返回一个非空的小部件以显示在FutureBuilder中。您可以返回一个宽度和高度为0.0的小部件,也可以返回一个指示数据正在加载的小部件,如CircularProgressIndicator。
我推荐一个FutureBuilder,它在未来等待的时候返回一个CircularProgressIndicator:
sqxo8psd2#
问题出在这一行:
你的Future脱离了等待状态,但是
data
仍然为null,然后你将它强制转换为Widget
,这样就绕过了Dart的类型检查,允许代码编译,但是在运行时中断。你可以将
snapshot.data
赋给一个局部变量,并检查它是否为空,这将允许Dart的类型提升生效,并且你可以在检查通过后直接返回局部变量,而不需要任何强制转换:这是假设
1.该返回值是一个小部件