【问题标题】: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 , 但它不起作用并显示错误

标签: android flutter dart drop-down-menu


【解决方案1】:

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

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

更多关于initStateDropdownButton的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2020-06-07
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多