Flutter自定义导航栏插件moony_nav_bar的使用

Flutter自定义导航栏插件moony_nav_bar的使用

确保你的应用中的库版本是最新的。一旦发现错误,我会尽快进行更新和修复。如果有任何问题或错误,请创建一个issue通知我。

打赏

GIF

  • #1

  • #2

  • #3

  • #4 自定义 NavigationBarItem

  • #5 带有边距和圆角

安装

使用 Flutter

运行以下命令:

flutter pub add moony_nav_bar

这将会在你的 pubspec.yaml 文件中添加如下依赖项(并运行隐式的 dart pub get):

dependencies:
  moony_nav_bar: ^1.3.0

导入

在你的代码文件中导入:

import 'package:moony_nav_bar/moony_nav_bar.dart';

风格

所有导航栏样式都包含在 MoonyNavStyle 类中。

属性 类型 默认值 描述
activeColor Color Color.black 激活颜色
color Color Color.black45 未激活导航项颜色
indicatorColor Color activeColor 指示器颜色
backgroundColor Color Colors.white 背景颜色
indicatorPosition IndicatorPosition IndicatorPosition.TOP 指示器位置
indicatorType IndicatorType IndicatorType.POINT 指示器类型
marginLeft double 0 左边距
marginRight double 0 右边距
marginBottom double 0 下边距
elevation double 5 导航栏阴影高度
borderRadius BorderRadius? null 导航栏圆角半径

NavigationBarItem 属性

属性 类型 默认值 描述
icon IconData - 默认图标(必填)
onTap NavigationButtonTapCallback - 点击监听器(必填)
activeIcon IconData null 激活图标(可选)
indicatorColor Color style.indicatorColor 指示器颜色(可选)
color Color style.activeColor 激活图标颜色(可选)

示例

注意事项

  • _screen1, _screen2, _screen3, _screen4 是我的示例屏幕,你可以替换为你自己的屏幕。
import 'package:flutter/material.dart';
import 'package:moony_nav_bar/moony_nav_bar.dart';
import 'package:moony_nav_bar_example/screen.dart';

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

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

class _MyAppState extends State<MyApp> {
  Widget _screen1 = Screen1();
  Widget _screen2 = Screen2();
  Widget _screen3 = Screen3();
  Widget _screen4 = Screen4();
  int selectedIndex = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Moony navigation bar'),
        ),
        body: getBody(),
        bottomNavigationBar: MoonyNavigationBar(
          items: [
            NavigationBarItem(
                icon: Icons.home_rounded,
                onTap: () {
                  onTapHandler(0);
                }),
            NavigationBarItem(
                icon: Icons.favorite_border_outlined,
                activeIcon: Icons.favorite,
                color: Colors.pink,
                indicatorColor: Colors.pink,
                onTap: () {
                  onTapHandler(1);
                }),
            NavigationBarItem(
                icon: Icons.search,
                onTap: () {
                  onTapHandler(2);
                }),
            NavigationBarItem(
                icon: Icons.person_outline,
                onTap: () {
                  onTapHandler(3);
                })
          ],
          style: MoonyNavStyle(
            activeColor: Theme.of(context).primaryColor,
            indicatorPosition: IndicatorPosition.TOP,
            indicatorType: IndicatorType.POINT,
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(10),
              topRight: Radius.circular(10),
            ),
          ),
        ),
      ),
    );
  }

  Widget getBody() {
    if (this.selectedIndex == 0) {
      return this._screen1;
    } else if (this.selectedIndex == 1) {
      return this._screen2;
    } else if (this.selectedIndex == 2) {
      return this._screen3;
    }
    return this._screen4;
  }

  void onTapHandler(int index) {
    this.setState(() {
      this.selectedIndex = index;
    });
  }
}

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

1 回复

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


moony_nav_bar 是一个用于 Flutter 的自定义导航栏插件,它允许你创建具有多种样式和动画效果的自定义底部导航栏。使用 moony_nav_bar 可以轻松地实现个性化的导航栏设计。

安装

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

dependencies:
  flutter:
    sdk: flutter
  moony_nav_bar: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

基本使用

以下是一个简单的示例,展示了如何使用 moony_nav_bar 来创建一个自定义的底部导航栏。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

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

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

  final List<Widget> _pages = [
    Center(child: Text('Home Page')),
    Center(child: Text('Search Page')),
    Center(child: Text('Profile Page')),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[_selectedIndex],
      bottomNavigationBar: MoonyNavBar(
        selectedIndex: _selectedIndex,
        onTap: _onItemTapped,
        items: [
          MoonyNavBarItem(
            icon: Icons.home,
            title: 'Home',
          ),
          MoonyNavBarItem(
            icon: Icons.search,
            title: 'Search',
          ),
          MoonyNavBarItem(
            icon: Icons.person,
            title: 'Profile',
          ),
        ],
      ),
    );
  }
}

自定义选项

moony_nav_bar 提供了多种自定义选项,你可以根据需要调整导航栏的外观和行为。

1. 修改颜色

你可以通过 selectedColorunselectedColor 来设置选中和未选中项的颜色。

MoonyNavBar(
  selectedIndex: _selectedIndex,
  onTap: _onItemTapped,
  selectedColor: Colors.blue,
  unselectedColor: Colors.grey,
  items: [
    MoonyNavBarItem(
      icon: Icons.home,
      title: 'Home',
    ),
    MoonyNavBarItem(
      icon: Icons.search,
      title: 'Search',
    ),
    MoonyNavBarItem(
      icon: Icons.person,
      title: 'Profile',
    ),
  ],
)

2. 添加动画效果

moony_nav_bar 支持多种动画效果,你可以通过 animationType 来设置。

MoonyNavBar(
  selectedIndex: _selectedIndex,
  onTap: _onItemTapped,
  animationType: MoonyNavBarAnimationType.fade,
  items: [
    MoonyNavBarItem(
      icon: Icons.home,
      title: 'Home',
    ),
    MoonyNavBarItem(
      icon: Icons.search,
      title: 'Search',
    ),
    MoonyNavBarItem(
      icon: Icons.person,
      title: 'Profile',
    ),
  ],
)

3. 自定义图标大小

你可以通过 iconSize 来调整图标的大小。

MoonyNavBar(
  selectedIndex: _selectedIndex,
  onTap: _onItemTapped,
  iconSize: 30,
  items: [
    MoonyNavBarItem(
      icon: Icons.home,
      title: 'Home',
    ),
    MoonyNavBarItem(
      icon: Icons.search,
      title: 'Search',
    ),
    MoonyNavBarItem(
      icon: Icons.person,
      title: 'Profile',
    ),
  ],
)
回到顶部