1

我创建了一个 dropdownButton 以允许用户从下拉列表中进行选择,该下拉列表将从 API 填充。现在我正在使用我创建的列表进行填充。

目前,该按钮正在显示我列表中的项目,但在进行选择后,列表不显示所选项目,但仍显示提示文本。我想要发生的是在做出选择之后,然后 dropdownButton 显示被选择的项目而不是提示文本。

在 onChanged 方法中,我添加了一个 setState,希望将 _selectedValue 变量更新为所选值并将其显示在下拉按钮中。

我还在我的 setState 方法中添加了一个 print 语句,它会触发并向我显示 value 变量中的值。

这是我的代码。

List<DropdownMenuItem<int>> listItems = [DropdownMenuItem(child: Text("2016"), value: 2016,), DropdownMenuItem(child: Text("2021"), value: 2021,)];
    int _selectedValue;

body: DropdownButton(
          value: _selectedValue,
          items: listItems,
          hint: Text("Select Year"),
          onChanged: (int value){
           setState(() {
             _selectedValue = value;
             print(value);
           });
          },
        ),
4

1 回答 1

4

您的代码很好,但问题可能是您正在初始化 _selectedValuebuild() 方法内部。因此,每当您调用 set state 时,小部件都会重建并使用默认值再次初始化。

int _selectedValue;
@override
Widget build(BuildContext context) {
    return DropdownButton(
    value: _selectedValue,
    items: listItems,
    hint: Text("Select Year"),
    onChanged: (int value){
      setState(() {
      _selectedValue = value;
      print(value);
    });    
},
),
于 2021-02-11T03:03:57.380 回答