Flutter 颤振下拉列表无法使用提供程序更改文本

Flutter 颤振下拉列表无法使用提供程序更改文本,flutter,dart,Flutter,Dart,我有一个代表当前所选项目的类: class DropdownText with ChangeNotifier { String _text = ""; String get text => _text; void setText(String value) { _text = value; notifyListeners(); } } 这是我用来显示下拉按钮的代码: class DropDown extends StatelessWidget {

我有一个代表当前所选项目的类:

class DropdownText with ChangeNotifier {

  String _text = "";

  String get text => _text;

  void setText(String value) {
    _text = value;
    notifyListeners();
  }

}
这是我用来显示下拉按钮的代码:

class DropDown extends StatelessWidget {

  final List<DropdownMenuItem<String>> menu = [
    DropdownMenuItem<String>(
      value: "A",
      child: Text("A"),
    ),
    DropdownMenuItem<String>(
      value: "B",
      child: Text("B"),
    )
  ];

   DropDown();

  @override
  Widget build(BuildContext context) {
    return FormField<String>(
      builder: (FormFieldState<String> formState) {
        return Consumer<DropdownText>(
          builder: (context, dropdown, _) {
            return InputDecorator(
              decoration: InputDecoration(
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.circular(10)
                  ),
                prefixIcon: const Icon(Icons.fastfood),
              ),
              child: DropdownButtonFormField<String>(
                items: menu,
                onChanged: (value) {
                  dropdown.setText(value);
                },
                value: dropdown.text,
              ),
            );
          },
        );
      },
    );
  }

}
类下拉列表扩展了无状态小部件{
最终列表菜单=[
下拉菜单项(
价值:“A”,
子项:文本(“A”),
),
下拉菜单项(
值:“B”,
儿童:文本(“B”),
)
];
下拉菜单();
@凌驾
小部件构建(构建上下文){
返回表单字段(
生成器:(FormFieldState formState){
退货消费者(
生成器:(上下文,下拉列表,382;){
返回输入装饰器(
装饰:输入装饰(
边框:大纲输入边框(
边界半径:边界半径。圆形(10)
),
前缀:常量图标(图标。快餐),
),
子项:DropdownButtonFormField(
项目:菜单,
一旦更改:(值){
下拉列表.setText(值);
},
值:dropdown.text,
),
);
},
);
},
);
}
}
我得到的错误是

断言失败:第1411行第15位:“items==null | | items.isEmpty|| 值==null | | I/颤振(7719):
项目。其中((下拉菜单项){I/flatter(7719):
return item.value==value;I/flatter(7719):}).length ==1'

但我在哪里失败了?我已经明确地把每一个泛型类型。这可能是提供商软件包中的
消费者
问题吗


此外,我在下拉列表中没有看到重复项和空项。

当您阅读这部分错误时

 items.where((DropdownMenuItem<T> item) {return item.value == value;}).length == 1'
解决方案

将DropDownText中文本的初始值设置为项目的第一个值(DropDownItems)

 String _text = "";
class DropdownText with ChangeNotifier {

  String _text = "A";

  String get text => _text;

  void setText(String value) {
    _text = value;
    notifyListeners();
  }

}