如何根据视图或namedRoute有条件地渲染bottomNavigationBar?

时间:2020-06-27 19:23:19

标签: flutter dart

尝试了几种方法,但需要对应用程序使用pushNamed。我曾尝试根据情况更改状态,但收到一条奇怪的错误消息,想知道这是否是执行此操作的最佳方法。

有没有人达到最佳方法?要求使用pushNamed在整个应用程序中传递参数。

MainView.dart的当前版本

class MainView extends StatefulWidget {
  @override
  _MainViewState createState() => new _MainViewState();
}

class _MainViewState extends State<MainView>
    with SingleTickerProviderStateMixin {
  final _navigatorKey = GlobalKey<NavigatorState>();

  int _currentIndex = 0;
  bool _bottomNav;

  @override
  void initState() {
    // () => bottomNavigationRemove(currentRoute);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomPadding: false,
      backgroundColor: Color(0xffF9FBFB),
      body: Navigator(
          key: _navigatorKey,
          initialRoute: '/',
          onGenerateRoute: (RouteSettings settings) {
            WidgetBuilder builder;
            switch (settings.name) {
              case '/':
                builder = (BuildContext context) => new OnboardingPage();
                break;
              case '/login':
                builder = (BuildContext context) => new LoginPage();
                print(settings.name);

                break;
              case '/register':
                builder = (BuildContext context) => new RegisterPage();
                print(settings.name);

                break;
              case '/feed':
                builder = (BuildContext context) => Feed();

                break;
              case '/createvisit':
                builder = (BuildContext context) => CreateVisit();

                break;
              
            }

            return MaterialPageRoute(
              builder: builder,
              settings: settings,
            );
          }),
      // body: currentPage,
      bottomNavigationBar: (BottomNavigator(_currentIndex)),
    );
  }
}

0 个答案:

没有答案