首页 > 解决方案 > Flutter "context" Navigatior.pushedNamed 生成器 RouteSettings

问题描述

自从我将我的 BottomNavigationBar 重构为一个新类以来,我Navigator.pushNamed的不再工作了。工作正常,setState()所以我强烈认为context. BottomNavigationBar 显示在应用程序中,但它不会再将我引导到下一页。我现在挣扎了几个小时来解决这个问题......

我得到的错误是: 在 _WidgetsAppState 中找不到路由 RouteSettings("...", null) 的生成器。

NewBottomNavigationBar类_

class NewBottomNavigationBar extends StatefulWidget {
  @override
  _NewBottomNavigationBarState createState() => _NewBottomNavigationBarState();
}

class _NewBottomNavigationBarState extends State<NewBottomNavigationBar> {
  int _selectedTab = 0;
  final _selectedTabList = [
    TheSlateScreen.id,
    Search.id,
    LoginScreen.id,
  ];
  @override
  Widget build(BuildContext context) {

return BottomNavigationBar(
    currentIndex: _selectedTab,
    onTap: (int index) {
      setState(() {
        _selectedTab = index;
      });

      Navigator.pushNamed(
        context,
        _selectedTabList[_selectedTab].toString(),
      );
    },
    unselectedItemColor: kSlate,
    items: const <BottomNavigationBarItem>[

……

我使用 NewBottomNavigation() 的类

class TheSlateScreen extends StatefulWidget {
      static const String id = 'theslate_screen';
      @override
      _TheSlateScreenState createState() => _TheSlateScreenState();
    }
    
    class _TheSlateScreenState extends State<TheSlateScreen> {   



 @override
      Widget build(BuildContext context) {
        screenWidth = MediaQuery.of(context).size.width;
        screenHeight = MediaQuery.of(context).size.height;

return MaterialApp(
 home: Scaffold(
    bottomNavigationBar: NewBottomNavigationBar(),
    appBar: AppBar(
      leading: null,
      actions: <Widget>[
        IconButton(
          icon: Icon(Icons.close),

......

我的 main.dart 中的路线

    class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
        create: (context) => SlateTasks(),
        child: MaterialApp(
          initialRoute: LoginScreen.id,
          routes: {
            LoginScreen.id: (context) => LoginScreen(),
            RegistrationScreen.id: (context) => RegistrationScreen(),
            TheSlateScreen.id: (context) => TheSlateScreen(),
            ResetPasswordScreen.id: (context) => ResetPasswordScreen(),
            Search.id: (context) => Search(),
          },
        ));

标签: flutterroutesnavigator

解决方案


推荐阅读