Flutter 如何取消选择下拉菜单中之前选择的项目

问题描述 投票:0回答:1

我有显示要选择的项目列表的代码。它可以正确地让我输入并搜索项目。但是,一旦我选择了该项目,有没有办法可以将其清除,就好像它从未被选择过一样,或者取消选择它。

我可以清空用于输入菜单项的文本框。然后它显示好像该项目从未被选择,但我的代码从未收到选择通知,所以我仍然认为原始项目已被选择。所以下次我绘制屏幕时,该项目会回来。

我就是这样做的

// pulldown of all crew members that can be selected
class SelectCrewMember extends StatefulWidget {
  final int index;

  const SelectCrewMember(this.index, {super.key});

  @override
  State<SelectCrewMember> createState() => _SelectCrewMemberState();
}

class _SelectCrewMemberState extends State<SelectCrewMember> {
  CrewMember? dropdownValue;

  @override
  Widget build(BuildContext context) {
    final position = CheckinData().getPositionToFill(widget.index);

    return Padding(
      padding: const EdgeInsets.fromLTRB(20, 8, 20, 8),
      child: DropdownMenu<CrewMember>(
        enableFilter: true,
        menuHeight: 300,
        width: 300,
        initialSelection: position.member,
        label: Text(position.position.name),
        onSelected: (CrewMember? value) {
          setState(() {
            dropdownValue = value!;
            CheckinData().updateCrew(value, widget.index);
          });
        },
        dropdownMenuEntries: CheckinData()
            .getCrewToPickFrom(widget.index)
            .map<DropdownMenuEntry<CrewMember>>((CrewMember value) {
          return DropdownMenuEntry<CrewMember>(
            value: value,
            label: value.name,
          );
        }).toList(),
      ),
    );
  }
}
flutter dart drop-down-menu menu dropdown
1个回答
0
投票

这就是我的做法,因为我认为没有内置的方法可以做到这一点。我将此属性添加到 DropdownMenu 小部件中:

trailingIcon: IconButton(
  icon: Icon(Icons.clear),
  onPressed: () => CheckinData().updateCrew(null, widget.index),
),
© www.soinside.com 2019 - 2024. All rights reserved.