如何在 Flutter 中使用 FAB 获得底部导航功能

How to get Bottom Navigation Functionality with FAB in Flutter

我有这样的设计,当我们打开应用程序时,默认情况下它首先转到主屏幕,并且我有两个底部导航栏项目。

我无法让它工作,因为我希望它按照底部导航栏的工作方式运行,但我希望默认屏幕成为主页。当您点击购物车或个人资料时,它应该突出显示该选项卡,但当您点击主页时,它应该取消突出显示。

你可以试试这个persistent_bottom_nav_bar

这是 Flutter 中 Bottom TabBar 的代码

class TabView extends StatefulWidget {
  const TabView({Key? key}) : super(key: key);

  @override
  _TabViewState createState() => _TabViewState();
}

class _TabViewState extends State<TabView> with SingleTickerProviderStateMixin {

  late TabController tabController;
  
  @override
  void initState() {
    super.initState();
    // TODO: CHANGE LENGTH
    tabController = TabController(length: 2, vsync: this);
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    tabController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: Container(
        height: 50,
        child: TabBar(
          unselectedLabelColor: Colors.grey,
          labelColor: kPrimaryColor,
          indicatorColor: kPrimaryColor,
          labelStyle: TextStyle(fontSize: 11, fontWeight: FontWeight.w500),
          tabs: [
            Tab(
              icon: Icon(Icons.home, size: 25.0,),
              text: "Tab1",
              iconMargin: EdgeInsets.zero,
            ),
            Tab(
              icon: Icon(Icons.person, size: 25.0),
              text: "Tab2",
              iconMargin: EdgeInsets.zero,
            ),
          ],
          controller: tabController,
        ),
      ),
      body: TabBarView(
        controller: tabController,
        children: [
          Tab1(),
          Tab2()
        ],
      ),
    );
  }
}

这是一个简单的解决方法或尝试搜索 bottomnavigation 包

检查这个 persistent_bottom_nav_bar 包它允许在所有带有导航器的页面中显示底部导航,在其他包中你必须自己做所有事情。

如果你想使用 persistent_bottom_nav_bar 检查这个

Top 16 Flutter Navigation Libraries

flutter-bottomappbar-navigation-with-fab

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        appBar: AppBar(title: Text('Title')),
        floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
        floatingActionButton:
            FloatingActionButton(child: Icon(Icons.add), onPressed: () {}),
        bottomNavigationBar: BottomAppBar(
            shape: CircularNotchedRectangle(),
            child: Container(
              height: 56,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: <Widget>[
                  IconButton(icon: Icon(Icons.home), onPressed: () {}),
                  IconButton(icon: Icon(Icons.search), onPressed: () {}),
                  SizedBox(width: 40), // The dummy child
                  IconButton(icon: Icon(Icons.notifications), onPressed: () {}),
                  IconButton(icon: Icon(Icons.message), onPressed: () {}),
                ],
              ),
            )),
      ),
    );
  }
}