You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter FutureBuilder报body可能返回null的非空类型错误如何解决

问题根源
  • FutureBuilder的builder参数要求回调函数必须返回一个非空的Widget类型对象,你的代码存在两处返回缺失:
    1. 仅在snapshot.hasData为true的分支内创建了CustomScrollView,但没有添加return关键字将其作为返回值
    2. 没有处理snapshot处于加载中、请求出错、无数据的其他分支场景,函数执行到末尾时没有任何返回值,符合报错描述的「函数体正常执行结束返回null,不符合非空返回类型要求」
  • 额外存在空安全使用不规范的问题:已经判断snapshot.hasData为真的前提下,snapshot.data必然非空,无需使用?.操作符;同时对article同时做了判空和!强制解包,逻辑冗余。
修复方案

补充所有分支的返回逻辑,规范空安全写法即可,替换后的build方法代码如下:

Widget build(BuildContext context) => Scaffold(
      body: FutureBuilder<Article>(
        future: _futureArticle,
        builder: (BuildContext context, AsyncSnapshot<Article> snapshot) {
          // 处理请求出错场景
          if (snapshot.hasError) {
            return Center(child: Text('加载失败:${snapshot.error}'));
          }
          // 处理加载中场景
          if (!snapshot.hasData) {
            return const Center(child: CircularProgressIndicator());
          }
          // 到这一步snapshot.data必然非空,直接取值即可
          final article = snapshot.data!.data;
          // 补充return关键字返回CustomScrollView
          return CustomScrollView(
            slivers: [
              SliverAppBar(
                // backgroundColor: Colors.red,
                expandedHeight: 200,
                floating: true,
                pinned: true,
                flexibleSpace: FlexibleSpaceBar(
                  background: Image.network(article == null
                      ? 'https://www.tonymacx86.com/attachments/2019-02-05-07-50-43-jpeg.385401/'
                      : article.imageUrl!),
                  title: Text('${article!.title}'),
                  centerTitle: true,
                ),
                leading: const Icon(Icons.arrow_back),
                actions: const [
                  Icon(Icons.settings),
                  SizedBox(width: 12),
                ],
              ),
              buildImages(),
            ],
          );
        },
      ),
    );

内容的提问来源于stack exchange,提问作者gegentierversuche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:04