【问题标题】:Navigation & Routing Flutter导航和路由颤振
【发布时间】:2019-12-16 12:11:49
【问题描述】:

我刚开始flutter并尝试构建一个在4个页面之间导航的底部导航栏:

'.../pages/home.dart';
'.../pages/history.dart';
'.../pages/search.dart';
'.../pages/bookmarks.dart';

启动应用程序时,主页应始终作为主屏幕显示。 (显然!!)

我根据一些文档构建导航栏。 导航栏似乎没有问题,但问题是

我不知道在哪里以及如何实现其余的导航和标签切换逻辑

这是我的 ma​​in_screen.dart

class _MainScreenState extends State<MainScreen> {
  PageController _pageController;
  int _page = 0;
  @override 
  Widget build(BuildContext context) {
    return Scaffold( 
      body: PageView( 
        physics: NeverScrollableScrollPhysics(),
        controller: _pageController,
        onPageChanged: onPageChanged,
        children: List.generate(4, (index) => Home()),
      ),
      bottomNavigationBar: Theme(
        data: Theme.of(context).copyWith(
          canvasColor: Theme.of(context).primaryColor,
          primaryColor: Theme.of(context).accentColor,
          textTheme: Theme.of(context).textTheme.copyWith(caption: TextStyle(color: Colors.grey[400]),),
        ),
        child: BottomNavigationBar( 
          type: BottomNavigationBarType.fixed,
          items: <BottomNavigationBarItem>[
            BottomNavigationBarItem(
              icon: Icon(
                Feather.getIconData("home"),
              ),
              title: Container(height: 0.0),
            ),
            BottomNavigationBarItem(
              icon: Icon(
                Feather.getIconData("file"),
              ),
              title: Container(height: 0.0),
            ),
            BottomNavigationBarItem(
              icon: Icon(
                Feather.getIconData("search"),
              ),
              title: Container(height: 0.0),
            ),
            BottomNavigationBarItem(
              icon: Icon(
                Feather.getIconData("bookmark"),
              ),
              title: Container(height: 0.0),
            ),
          ],
          onTap: navigationTapped,
          currentIndex: _page,
        ),
      ),
    );
  }

  void navigationTapped(int page){
    _pageController.jumpToPage(page);
  }
  @override 
  void initState(){
    super.initState();
    _pageController = PageController(initialPage: 0);
  }
  @override 
  void dispose() {
    super.dispose();
    _pageController.dispose();
  }
  void onPageChanged(int page){
    setState(() {
      this._page = page;
    });
  }
}

【问题讨论】:

    标签: android ios flutter dart flutter-navigation


    【解决方案1】:

    因此,在您的PageView 中,您列出了children 这些页面应该与您的标签相对应。

    目前,您的Home 小部件列出了 4 次,当您单击选项卡时显然不会显示任何差异。

    如果你像这样替换使你的children 它应该可以正常工作

    children: [Home(), History(), Search(), Bookmarks()]
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2019-06-04
      • 2020-07-14
      • 2021-11-24
      • 2022-11-25
      • 2022-10-18
      • 1970-01-01
      • 2020-10-10
      • 2019-07-01
      相关资源
      最近更新 更多