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

Flutter DropdownButton报List<dynamic>不是List<DropdownMenuItem<Partner>>?子类型

问题原因

你遇到的类型不匹配错误核心是Dart的类型推断没有识别出map方法生成的元素类型是DropdownMenuItem<Partner>,最终toList()返回的是默认的List<dynamic>,和DropdownButton要求的items类型不匹配。

修复步骤

1. 修正下拉组件的类型声明与map泛型

把下拉组件的代码调整如下:

Container(
  child: FutureBuilder<List<Partner>>(
    future: AllPathLab(),
    // 给AsyncSnapshot指定泛型,明确snapshot.data的类型
    builder: (BuildContext context, AsyncSnapshot<List<Partner>> snapshot) {
      if (snapshot.connectionState != ConnectionState.done) {
        return const CircularProgressIndicator();
      }
      if (snapshot.hasError) {
        return const Text("Something went wrong");
      }
      if (snapshot.hasData) {
        return DropdownButton<Partner>(
          dropdownColor: Colors.white,
          underline: const SizedBox(),
          isExpanded: true,
          // 1. 加!确认data非空,2. 给map指定泛型,明确生成的元素类型
          items: snapshot.data!.map<DropdownMenuItem<Partner>>((Partner data) =>
            DropdownMenuItem<Partner>(
              child: Text(data.partnerName),
              value: data,
            )
          ).toList(),
          onChanged: (value){
            // 后续补充选中逻辑即可
          },
        );
      }
      return const Text("Waiting for Internet Connection");
    },
  ),
)

2. 修正Partner类的空安全问题(必做,避免后续崩溃)

你当前的Partner类中partnerName声明为非空String,但fromJson方法里会给它赋值null,类型不匹配,需要调整为可空类型:

class Partner {
    Partner({
        required this.encPartnerId,
        this.partnerName, // 去掉required
    });

    String encPartnerId;
    String? partnerName; // 改为可空类型

    factory Partner.fromJson(Map<String, dynamic> json) => Partner(
        encPartnerId: json["EncPartnerId"],
        partnerName: json["PartnerName"],
    );

    Map<String, dynamic> toJson() => {
        "EncPartnerId": encPartnerId,
        "PartnerName": partnerName,
    };
}

额外优化

你的AllPathLab函数里jsonDecode(response.body);是冗余代码,可以直接删掉,后面你已经用allPathLabTestModelFromJson解析响应了,不需要重复解码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:36:03