Я хочу закрыть ящик, когда выбираю один из вариантов, но когда я пытался вызвать Navigator.pop(context)
или Navigator.of(context).pop()
, он выдает ошибку Navigator operation requested with a context that does not include a Navigator
.
Я пробовал все решения, которые я нашел на Inte rnet, но ни один из них у меня не работал. Вот несколько фрагментов кода:
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(),
);
}
}
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,
),
],
),
),
),
);
}
}
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()
или настраиваемый виджет, подобный показанному, это не работает.