flutter DropDown Button之 There should be exactly one item with [DropdownButton]‘s value: One...错误

在使用Flutter的DropdownButton时遇到错误提示:There should be exactly one item with [DropdownButton]'s value。解决方法是确保DropdownButton的value值与items列表中的一个值相匹配。可以通过设置一个固定的初始值来避免此问题。

解决方案: flutter要求DropdownButton中的value值与List<String> items中的值有重合

换句话说,让你的value有一个固定的初始值,这里用图举例

附上官方代码(可以直接copy):

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  String dropdownValue = 'One';

  @override
  Widget build(BuildContext context) {
    return DropdownButton<String>(
      value: dropdownValue,
      icon: const Icon(Icons.arrow_downward),
      elevation: 16,
      style: const TextStyle(color: Colors.deepPurple),
      underline: Container(
        height: 2,
        color: Colors.deepPurpleAccent,
      ),
      onChanged: (String? newValue) {
        setState(() {
          dropdownValue = newValue!;
        });
      },
      items: <String>['One', 'Two', 'Free', 'Four']
          .map<DropdownMenuItem<String>>((String value) {
        return DropdownMenuItem<String>(
          value: value,
          child: Text(value),
        );
      }).toList(),
    );
  }
}

附上我的垃圾代码(仅供参考,与本人记录):

  List<String> bookitem = ["Brand New", "Almost New", "Good","Acceptable"];
  String dropdownValue = "Brand New";



 Positioned(
              top: HYSizeFit.setPx(300),
              left: HYSizeFit.setPx(110),
              child: DropdownButton(
                icon: const Icon(Icons.arrow_downward),
                elevation: 16,
                items: bookitem
                    .map((e) => DropdownMenuItem(
                          child: Text(e),
                          value: e,
                        ))
                    .toList(),
                value: dropdownValue,
                onChanged: (value) {
                  setState(() {
                    dropdownValue= value.toString();
                  });
                },
              ),
            )

参考链接:

1.https://api.flutter.dev/flutter/material/DropdownButton-class.html

2.https://www.youtube.com/watch?v=w2EwuiKsUqU

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值