Удалить элемент из PopupMenuButton, когда он открыт - PullRequest
0 голосов
/ 07 марта 2020

У меня есть PopupMenuButton, который отображает некоторые PopupMenuItem<String>, сгенерированные из List<String>. Каждый элемент имеет кнопку удаления, которая удаляет String из списка. Проблема в том, что всплывающее меню не восстанавливается после удаления элемента, пока оно не закроется и не откроется снова.

Кажется, что независимо от того, что я делаю, даже используя GlobalKey и вызывая key.currentState.setState() , это не заставляет всплывающее меню перестраиваться, пока оно не закроется и не откроется снова.

  GlobalKey _favoritesKey = new GlobalKey();

  PopupMenuButton<String>(
      key: _favoritesKey,
      icon: Icon(Icons.bookmark_border),
      itemBuilder: (context){
          List<PopupMenuItem<String>> result = [];
          model.favorites.forEach((x){
              result.add(PopupMenuItem<String>(value: x, child: Row(
                  children: [
                      IconButton(icon: Icon(Icons.delete_outline), onPressed: (){
                          model.removeFavorite(x);
                          _favoritesKey.currentState?.setState((){});
                          setState(() {});
                      }),
                      Text(x)
                  ]
              )));
          });
          return result;
      },
      onSelected: (x){
          // Do something with the selected value
      },
  )

Как сделать так, чтобы всплывающее меню перестраивалось при его открытии?

...