Не удается исправить «Запрошена операция навигатора с контекстом, который не включает навигатор». [Flutter] - PullRequest
0 голосов
/ 30 мая 2020

Я хочу закрыть ящик, когда выбираю один из вариантов, но когда я пытался вызвать Navigator.pop(context) или Navigator.of(context).pop(), он выдает ошибку Navigator operation requested with a context that does not include a Navigator.

Я пробовал все решения, которые я нашел на Inte rnet, но ни один из них у меня не работал. Вот несколько фрагментов кода:

  • main.dart:
void main() {
  setupLocator();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    precacheImage(AssetImage("assets/images/augusto.jpg"), context);
    precacheImage(AssetImage("assets/icons/instagram.png"), context);
    precacheImage(AssetImage("assets/icons/linkedin.png"), context);
    precacheImage(AssetImage("assets/icons/gmail.png"), context);
    precacheImage(AssetImage("assets/icons/logo.jpg"), context);
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'AG Programming',
      theme: ThemeData(
        textTheme: Theme.of(context).textTheme.apply(
          fontFamily: "Raleway",
        ),
      ),
      color: primaryColor,
      themeMode: ThemeMode.light,
      builder: (context, child) => LayoutTemplate(
        child: child,
      ),
      navigatorKey: locator<NavigationService>().navigatorKey,
      onGenerateRoute: generateRoute,
      initialRoute: HomeRoute,
      home: LayoutTemplate(),
    );
  }
}
  • LayoutTemplate ():
class LayoutTemplate extends StatelessWidget {
  final Widget child;
  const LayoutTemplate({Key key, this.child}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ResponsiveBuilder(
      builder: (context, sizingInformation) => Scaffold(
        drawer: sizingInformation.deviceScreenType == DeviceScreenType.mobile
            ? NavigationDrawer()
            : null,
        backgroundColor: Colors.white,
        body: CenteredView(
          child: Column(
            children: <Widget>[
              NavigationBar(),
              Expanded(
                child: child,
              ),
            ],
          ),
        ),
      ),
    );
  }
}
  • NavigationDrawer ():
class NavigationDrawer extends StatelessWidget {
  const NavigationDrawer({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        children: <Widget>[
          NavigationDrawerHeader(),
          DrawerItem('Home', Icons.home, HomeRoute),
          DrawerItem('About', Icons.help_outline, AboutRoute),
          DrawerItem('Services', Icons.room_service, ServicesRoute),
          DrawerItem('Projects', Icons.work, ProjectsRoute),
          DrawerItem('Contact', Icons.contact_mail, ContactRoute),
        ],
      ),
    );
  }
}

Добавляю ли я ListTile() или настраиваемый виджет, подобный показанному, это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...