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

为什么我的DropdownButtonFormField组件无法展示下拉选项?

以下是对应问题的排查修复步骤:

  • 修复语法错误
    你提供的代码中onChanged回调结束后缺少逗号分隔后续的items属性,属于Dart语法问题,首先补全分隔逗号:
    onChanged: (value){
      shipmentSelected = value;
    }, // 此处补充分隔逗号
    items: product.shipment.map((Shipment shipment) {
    
  • 补充状态更新逻辑
    如果你的组件是StatefulWidget,直接给shipmentSelected赋值不会触发UI重绘,需要把赋值逻辑包裹在setState方法内:
    onChanged: (value){
      setState(() {
        shipmentSelected = value;
      });
    },
    
  • 校验数据源有效性
    先打印确认product.shipment数组不为null且长度大于0,数据源为空时自然不会渲染下拉选项,可以增加判空兜底逻辑避免异常:
    items: product.shipment?.map((Shipment shipment) {
      return DropdownMenuItem(
        value: shipment.code,
        child: Text(shipment.code ?? ''),
      );
    })?.toList() ?? [],
    
  • 校验value类型匹配性
    确认shipmentSelected的变量类型和shipment.code的类型完全一致,比如shipment.code为String类型时,shipmentSelected不能定义为int类型,类型不匹配会导致组件无法正确识别选项。
  • 校验value唯一性
    如果product.shipment中存在多个相同code的条目,Dropdown组件会因为重复value抛出异常导致渲染失败,需要保证每个DropdownMenuItem的value值唯一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:27:03