Имеет навигацию Купертино, чтобы показать панель приложения, но нужен конечный ящик

Я пытаюсь добавить CupertinoNavigationBar с помощью endDrawer я пытаюсь добавить детектор жестов в конце, но это не работает, показывает следующее:

The following assertion was thrown while handling a gesture:
flutter: `Scaffold.of()` called with a context that does not contain a Scaffold.
flutter: No Scaffold ancestor could be found starting from the context that was passed to `Scaffold.of()`. This
flutter: usually happens when the context provided is from the same StatefulWidget as that whose build

Я уже пытался добавить ключ к скаффолду и пытаться открыть с ключом, я тоже пытаюсь с контекстом скаффолда в панели приложений

AppBar:

Scaffold(
      appBar: CupertinoNavigationBar(
    transitionBetweenRoutes: true,
    trailing: IconButton(
    icon: Icon(Icons.menu),
    onPressed: () { 
        Scaffold.of(context).openEndDrawer();
    },),
    actionsForegroundColor: Colors.white,
    middle: Text('Lejour', style: TextStyle(color: Colors.white)),
          backgroundColor: Theme.of(context).primaryColor),
   endDrawer: DrawerMenu() // my own class,
   body: // ...body

Я ожидаю, что мой конечный значок из CupertinoNavigationBar откроет endDrawer с
Scaffold.of(context).openEndDrawer();

1 ответ

Решение

Это общая проблема, когда вы пытаетесь использовать Scaffold.of(context), Вы должны прочитать журнал ошибок.

Не может быть найдено предка Скаффолда, начиная с контекста, который был передан Scaffold.of()

Чтобы решить вашу проблему, используйте Builder виджет для создания нового контекста.

trailing: Builder(
            builder: (context) {
              return IconButton(
                icon: Icon(Icons.menu),
                onPressed: () {
                  Scaffold.of(context).openEndDrawer();
                },
              );
            },
          ),
Другие вопросы по тегам