Flutter中FutureBuilder的build function返回null,加return仍报错怎么办
问题原因
- FutureBuilder的
builder回调强制要求所有逻辑分支都返回非空的Widget,无返回值时函数默认返回null,就会触发build function returned null报错 - 你提供的代码仅覆盖了
snapshot.hasData这一种场景,未处理异步请求加载中、请求报错、初始无数据等其他状态,没有对应返回语句,因此触发错误
修复方案
补全所有逻辑分支的返回值,建议按照状态优先级依次处理加载中、请求错误、正常返回的场景,最后增加兜底返回覆盖所有边缘情况,参考代码如下:
FutureBuilder( future: _getdetailRM(), builder: (context, snapshot) { // 处理加载中状态 if (snapshot.connectionState == ConnectionState.waiting) { // 可根据需求替换为加载动画或空白占位 return const CircularProgressIndicator(); } // 处理请求错误状态 if (snapshot.hasError) { return Text('请求出错:${snapshot.error}'); } // 处理有数据的正常业务场景 if (snapshot.hasData) { return Container(); } // 兜底空白占位,覆盖所有剩余边缘场景 return const SizedBox.shrink(); } )
如果不需要对不同状态做差异化展示,也可以直接在函数末尾加一行兜底返回return const SizedBox.shrink();即可快速解决问题,该组件等价于你提到的宽高均为0的Container,是Flutter官方推荐的最小占位组件。
内容的提问来源于stack exchange,提问作者Macchiato
相关产品推荐
相关产品推荐

