如何在颤动中将默认值设置为下拉菜单?

Posted

技术标签:

【中文标题】如何在颤动中将默认值设置为下拉菜单?【英文标题】:How to set default value to dropdown in flutter? 【发布时间】:2022-01-16 06:50:18 【问题描述】:

我想为下拉菜单提供一个默认值 (final province)。 但我不知道该怎么做。

class ChooseAddress extends StatefulWidget 
  final province;
  const ChooseAddress(Key? key,required this.provincee) : super(key: key);

  @override
  _ChooseAddressState createState() => _ChooseAddressState();


class _ChooseAddressState extends State<ChooseAddress> 

   ProvinceModel? _value;

  Widget Province(double pageHeight, double pageWidth)
    return Container(
      height: 60,
      width: pageWidth,
      padding: EdgeInsets.symmetric(horizontal: pageWidth/20),
      child: Directionality(
        textDirection: TextDirection.rtl,
        child: DropdownButtonHideUnderline(
          child: DropdownButton(
            menuMaxHeight: pageHeight/2,
            elevation: 2,
            value: _value,
            items: _items.map((item)
              return DropdownMenuItem(
                alignment: Alignment.centerRight,
                child:  Text(item.name),
                value: item,);
            ).toList(),
            onChanged: (value) 
              setState(() 
                _value = value as ProvinceModel;
           );
            ,
            hint: AutoSizeText(
              "choose province",
              style: TextStyle(
                  fontWeight: FontWeight.bold,
                  fontSize: pageWidth / 25),
            ),
          ),
        ),
      )
    );
  

注意final province 可以为空,所以我需要处理它。

我的省模式也是:

class ProvinceModel
  late String name;
  late int id;
  ProvinceModel(this.name,this.id);

final province 就是 ProvinceModel 的String name

【问题讨论】:

“我想给一个默认值” - 然后将默认值分配给_value - 现在是null @pskink 我喜欢这样:value: widget.province ?? _value as ProvinceModel , 但它不起作用并显示错误 【参考方案1】:

覆盖initState 以初始化_value 上的值。

  @override
  void initState() 
    super.initState();
    _value = widget.province;
  

更多关于initState和DropdownButton的信息。

【讨论】:

以上是关于如何在颤动中将默认值设置为下拉菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何为下拉菜单中的下拉菜单和颤动中选择的项目添加不同的文本样式?

如何在颤动中更改下拉按钮的默认值?

在颤动中使用块和下拉菜单

颤动中下拉菜单中的状态是不是存在问题

下拉菜单选中后还是显示默认值

使用javascript将下拉菜单设置为默认值[重复]