Error code个 嗨,我是新来的,有一个关于DropDownButton的问题,那就是对多个DropDownButton使用相同的值.

根据我对错误的理解,这是因为在同一活动中对2个或更多下拉按钮使用了相同的列表.

我如何才能解决这个错误,但仍然能够重复使用列表中的2个或更多下拉按钮?

  String _value1;
  String _value2;

  final List<String> nameList = <String>[
    "Name1",
    "Name2",
    "Name3",
    "Name4",
    "Name5",
    "Name6",
    "Name7",
    "Name8"
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 2.0,
        title: Text('Hello'),
      ),
      body:  ListView(
            children: <Widget>[
              Row(
                children: <Widget>[
                  Text('Name: '),
                  Center(
                    child: DropdownButton(
                      value: _value1,
                      onChanged: (value) {
                        setState(() {
                          _value1 = value;
                        });
                      },
                      items: nameList.map(
                        (item) {
                          return DropdownMenuItem(
                            value: item,
                            child: new Text(item),
                          );
                        },
                      ).toList(),
                    ),
                  ),
                ],
              ),
              Row(
                children: <Widget>[
                  Text('Name: '),
                  Center(
                    child: DropdownButton(
                      value: _value2,
                      onChanged: (value) {
                        setState(() {
                          _value2 = value;
                        });
                      },
                      items: nameList.map(
                        (item) {
                          return DropdownMenuItem(
                            value: item,
                            child: new Text(item),
                          );
                        },
                      ).toList(),
                    ),
                  ),
                ],
              ),
            ],
          ),
      backgroundColor: Colors.grey[200],
    );
  }
}

推荐答案

我有完全相同的错误,多个下拉列表都来自同一个静态列表,唯一的区别是,在我的例子中,它是一个对象列表,而不是字符串.

所以,如果它是一个静电列表,它不可能是空的,列表中没有重复的值,而您已经确保value%不是空的?那么剩下的唯一 Select 就是item.value不同于value

在我的例子中,由于它是一个对象列表,我必须覆盖对象类中的operator ==hashcode个方法.

bool operator ==(dynamic other) =>
      other != null && other is TimeSelection && this.hour == other.hour;

  @override
  int get hashCode => super.hashCode;

就这样.我不需要初始化_value1_value2

Flutter相关问答推荐

如何从模型列表中生成DropdownButtonFormField?

在fltter_widget_from_html中启动url

我如何才能动态地将小部件排成一排进行排列呢?

无法在我的Flutter 应用程序中使用GoRouter测试导航

为什么我的页面控制器在使用Riverpod时没有更改我的页面视图?

如何在Flutter 中使用滚动展开窗口小部件

使索引[0]在ListViewBuilder中返回字符串1

了解多Provider 和流

Flutter - Riverpod 2.0 - 如何访问 onDispose 回调?

Flutter 未处理的异常 - 对 null 值使用 Null 判断运算符

我无法找到修复此错误的位置,指出无法使用静态访问来访问实例成员

Riverpod中stateNotiferProvider和notifierProvider的区别

Dart 撕掉 const 构造函数

有没有办法在没有收缩包装的情况下在列中使用 ListView.Builder?

无法使用 bloc 更新 ListView.builder 的特定时间

Flutter - 如何将按钮对齐到行的右侧

我想在一个屏幕上有两个相同区域的列表视图,我该如何设置?

为什么 Flutter riverpod 直接分配不起作用但方法可以

从物理设备 Flutter 中移除 USB 后启动画面不可见?

检索 api 的值时,我得到_TypeError(类型'Null'不是'String'类型的子类型)