разные экраны с PopupMenuButton - PullRequest
1 голос
/ 07 августа 2020

Я работаю над небольшим приложением на Flutter / Dart, чтобы привыкнуть к языку, поскольку я новичок в нем. Я проверяю, внедрил ли PopupMenuButton на панели своего приложения, что я сделал правильно. Я пытаюсь получить разные экраны (виджеты) в зависимости от того, какой элемент из PopupMenuButton выбран. Например: PopupMenuItems: настройки, профиль, выход. Поэтому всякий раз, когда пользователь выбирает один из них, он перенаправляется на другой виджет (экран). Пока мне удалось выполнить PopupMenuBotton, и различные параметры отображают другое значение на экране:

class _MyHomePage extends State<MyHomePage> {
  String _selectedValue;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        // centers the title in the appBar
        centerTitle: true,
        title: Text(
          "Alba's Playground",
          // Mentioning the theme
          style: Theme.of(context).textTheme.headline1,
        ),
        actions: <Widget>[
          PopupMenuButton(onSelected: (String str) {
            setState(() {
              _selectedValue = str;
            });
          }, itemBuilder: (BuildContext context) {
            return <PopupMenuEntry<String>>[
              PopupMenuItem(
                child: Text(
                  "Item 1",
                  // Mentioning the theme
                  style: Theme.of(context).textTheme.headline2,
                ),
                value: "Item1",
              ),
              PopupMenuItem(
                child: Text(
                  "Item 2",
                  style: Theme.of(context).textTheme.headline2,
                ),
                value: "Item2",
              ),
              PopupMenuItem(
                child: Text(
                  "Item 3",
                  style: Theme.of(context).textTheme.headline2,
                ),
                value: "Item3",
              ),
            ];
          })
        ],
      ),
      body: Container(
        Text("$_selectedValue"),

Таким образом, всякий раз, когда пользователь обращается к параметру «item1», отображается значение «item1». , но это не меняет экран. Я хочу добиться разных экранов для разных кнопок. Если кто-нибудь знает, как это сделать или может дать мне подсказку, я был бы очень признателен.

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Используйте это: -

GestureDetector(onTap: () {
                  Navigator.push(context,
                  MaterialPageRoute(builder: (context) => SettingScreen()),
                },
                child://your child 
);
0 голосов
/ 07 августа 2020

Обратите внимание на функцию setState((){}). Кроме того, вам необходимо использовать функциональные кнопки onTap:. Если это не так для виджета, который вы используете в качестве кнопки, проверьте GestureDetector .

...