Всплывающее меню не работает должным образом в flutter

#flutter

Вопрос:

Проблема в том, что когда я выбираю элемент, выбранное состояние не меняется .У меня здесь есть этот код,что я делаю не так

 class _DemoState extends State<Demo> {
String _selected = "Ankara";
@override
Widget build(BuildContext context) {
return Center(
  child: PopupMenuButton(
    
    itemBuilder: (BuildContext ctx) {
      return <PopupMenuEntry<String>>[
        PopupMenuItem(
          child: Text("Ankara"),
          value: "Ankara",
        ),
        PopupMenuItem(
          child: Text("İzmir"),
          value: "İzmir",
        ),
      ];
    },
    
    onSelected: (String city) {
      setState(() {
        _selected = city;
      });
    },
  ),
);
 

}
}

Комментарии:

1. Это действительно меняет состояние. Попробуйте распечатать _selected .

Ответ №1:

Вам нужно добавить initialValue во всплывающее окно, чтобы указать, что что-то было выбрано. Также ваше начальное значение должно быть равно выбранному значению

 class _DemoState extends State<Demo> {
  String _selected = "Ankara";

  @override
  Widget build(BuildContext context) {
    return Center(
      child: PopupMenuButton(
        initialValue: _selected, // add your initial value here
        itemBuilder: (BuildContext ctx) {
          return <PopupMenuEntry<String>>[
            PopupMenuItem(
              child: Text("Ankara"),
              value: "Ankara",
            ),
            PopupMenuItem(
              child: Text("İzmir"),
              value: "İzmir",
            ),
          ];
        },
        onSelected: (String city) {
          setState(() {
            _selected = city;
          });
        },
      ),
    );
  }
}