Flutter编译报错:返回类型Widget非空却可能返回null,如何解决?
问题原因
你的buildSingleMessage函数声明返回Widget类型,但函数体中仅创建了FutureBuilder实例,却没有通过return语句将其返回。Dart空安全规则下,非空返回类型的函数必须明确返回对应类型的值,否则会默认返回null,触发该编译错误。
解决方法
在FutureBuilder前添加return关键字,让函数返回这个Widget实例即可。修改后的代码如下:
Widget buildSingleMessage(Message message) { // 添加return关键字返回FutureBuilder return FutureBuilder<List<Message>>( future: fetchResult(), builder: (context, snapshot) { if (snapshot.hasError || snapshot.data == null || snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } return Container( alignment: message.sender.id == widget.receiver ? Alignment.centerLeft : Alignment.centerRight, padding: EdgeInsets.all(10.0), margin: EdgeInsets.all(10.0), child: Text(message.message), ); }, ); }
注:你的FutureBuilder内部的builder逻辑已经覆盖了所有可能的状态(错误、无数据、加载中、数据正常),无需额外调整,只需修复外层函数的返回问题即可。
内容的提问来源于stack exchange,提问作者Hope
相关产品推荐
相关产品推荐

