Flutter底部导航栏插件nav_bottom_bar的使用

Flutter底部导航栏插件nav_bottom_bar的使用

简单明了的底部导航栏。

安装

pubspec.yaml 文件中添加 nav_bottom_bar 依赖:

dependencies:
  flutter:
    sdk: flutter
  nav_bottom_bar: version

引入库

在 Dart 文件中引入 nav_bottom_bar 库:

import 'package:nav_bottom_bar/nav_bottom_bar.dart';

示例代码

以下是一个完整的示例代码,展示了如何使用 nav_bottom_bar 插件来创建一个底部导航栏。

import 'package:flutter/material.dart';
import 'package:nav_bottom_bar/nav_bottom_bar.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String body = "Home"; // 当前显示的页面文本
  int index = 0; // 当前选中的索引

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('示例应用'),
        ),
        body: Stack(
          children: [
            Center(
              child: Text(
                body,
                style: TextStyle(fontSize: 32),
              ),
            ),
            Positioned(
              // 调整按钮位置
              bottom: 15,
              child: NavBottomBar(
                showBigButton: true, // 是否显示大按钮
                bigIcon: Icons.add, // 大按钮图标
                currentIndex: index, // 当前选中的索引
                btnOntap: () {
                  setState(() {
                    body = "大按钮按下";
                  });
                },
                buttonPosition: ButtonPosition.end, // 大按钮位置
                children: [
                  NavIcon(
                    icon: Icons.home, // 首页图标
                    activecolor: Colors.red, // 激活颜色
                    onTap: () {
                      setState(() {
                        index = 0;
                        body = "首页";
                      });
                    },
                  ),
                  NavIcon(
                    icon: Icons.history, // 历史图标
                    activecolor: Colors.green, // 激活颜色
                    onTap: () {
                      setState(() {
                        index = 1;
                        body = "历史";
                      });
                    },
                  ),
                  NavIcon(
                    icon: Icons.notifications, // 通知图标
                    onTap: () {
                      setState(() {
                        index = 2;
                        body = "通知";
                      });
                    },
                  ),
                  NavIcon(
                    icon: Icons.person, // 个人中心图标
                    onTap: () {
                      setState(() {
                        index = 3;
                        body = "个人中心";
                      });
                    },
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter底部导航栏插件nav_bottom_bar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter底部导航栏插件nav_bottom_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


nav_bottom_bar 是一个用于 Flutter 的底部导航栏插件,它允许你轻松地在应用程序中实现一个带有图标和标签的底部导航栏。以下是如何使用 nav_bottom_bar 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 nav_bottom_bar 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  nav_bottom_bar: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 nav_bottom_bar

import 'package:nav_bottom_bar/nav_bottom_bar.dart';

3. 创建底部导航栏

接下来,你可以使用 NavBottomBar 来创建一个底部导航栏。通常,你会将 NavBottomBar 放在 ScaffoldbottomNavigationBar 属性中。

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _selectedIndex = 0;

  final List<Widget> _pages = [
    Page1(),
    Page2(),
    Page3(),
  ];

  void _onItemTapped(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[_selectedIndex],
      bottomNavigationBar: NavBottomBar(
        items: const <NavBottomBarItem>[
          NavBottomBarItem(
            icon: Icon(Icons.home),
            label: 'Home',
          ),
          NavBottomBarItem(
            icon: Icon(Icons.business),
            label: 'Business',
          ),
          NavBottomBarItem(
            icon: Icon(Icons.school),
            label: 'School',
          ),
        ],
        currentIndex: _selectedIndex,
        onTap: _onItemTapped,
      ),
    );
  }
}

4. 自定义导航栏

NavBottomBar 提供了多种自定义选项,例如:

  • selectedColor: 选中项的颜色。
  • unselectedColor: 未选中项的颜色。
  • backgroundColor: 底部导航栏的背景颜色。
  • elevation: 底部导航栏的阴影高度。

你可以在 NavBottomBar 的构造函数中设置这些属性:

bottomNavigationBar: NavBottomBar(
  items: const <NavBottomBarItem>[
    NavBottomBarItem(
      icon: Icon(Icons.home),
      label: 'Home',
    ),
    NavBottomBarItem(
      icon: Icon(Icons.business),
      label: 'Business',
    ),
    NavBottomBarItem(
      icon: Icon(Icons.school),
      label: 'School',
    ),
  ],
  currentIndex: _selectedIndex,
  onTap: _onItemTapped,
  selectedColor: Colors.blue,
  unselectedColor: Colors.grey,
  backgroundColor: Colors.white,
  elevation: 10.0,
),

5. 处理页面切换

当用户点击底部导航栏的某个项时,onTap 回调会被触发,你可以在这个回调中更新当前选中的索引,并切换到对应的页面。

void _onItemTapped(int index) {
  setState(() {
    _selectedIndex = index;
  });
}
回到顶部