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

升级Flutter版本后出现Object?无法赋值给List类型参数错误如何解决

问题原因

新版Flutter引入空安全特性后,未指定泛型的FutureBuilder默认的snapshot.data类型为Object?,Dart无法直接确认该值可以转为List类型,因此抛出类型不匹配错误。另外原代码中的snapshot.data == 0判断逻辑不符合返回值为List的场景,属于错误的无数据判断规则。

修复方案

首先给FutureBuilder明确指定泛型类型,同步优化判断逻辑,修复后的代码如下:

list() {
    return Expanded(
      child: FutureBuilder<List<Url>>( // 此处指定Future返回值的实际类型
        future: employees,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            // 泛型指定后snapshot.data类型为List<Url>?,非空时可直接使用
            return dataTable(snapshot.data!);
          }
          
          // 无数据或返回空列表时的处理
          if (snapshot.data == null || snapshot.data?.isEmpty == true) {
            return const Text("Tiada Data");
          }

          return const CircularProgressIndicator();
        },
      ),
    );
  }

额外说明

如果你的employees返回的是动态类型列表,没有明确声明为List<Url>,可以将泛型修改为FutureBuilder<List<dynamic>>,再通过List<Url>.from(snapshot.data!)完成类型转换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:18:04