Flutter底部导航栏带指示器插件bottom_navbar_with_indicator的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter底部导航栏带指示器插件bottom_navbar_with_indicator的使用

bottom_navbar_with_indicator 是一个Flutter包,用于创建带有线条指示器和渐变效果的完全可自定义的底部导航栏。它允许创建包含任何自定义小部件(无状态或有状态)的底部栏,并且具有非常流畅的动画效果,支持Android、iOS、WebApp和DesktopApp。

安装

要安装此包,请按照以下步骤操作:

  1. 在您的 pubspec.yaml 文件中添加依赖项:

    dependencies:
      bottom_navbar_with_indicator: ^latest_version # 请将 latest_version 替换为最新版本号
    
  2. 或者在项目根目录下运行命令:

    flutter pub add bottom_navbar_with_indicator
    
  3. 在您的Dart文件中导入包:

    import 'package:bottom_navbar_with_indicator/bottom_navbar_with_indicator.dart';
    

使用示例

不带渐变的底部导航栏

下面是一个不带渐变效果的底部导航栏的完整示例代码:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyExample(),
    );
  }
}

class MyExample extends StatefulWidget {
  const MyExample({super.key});

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

class _MyExampleState extends State<MyExample> {
  int _selectedIndex = 0; // 默认索引
  static const String basePath = "assets/images";
  static const String accountImage = "$basePath/account.png";

  final List<Widget> _widgetOptions = [
    const Text('Home'),
    const Text('Account'),
    const Text('Leaves'),
    const Text('Loyalty'),
    const Text('Requests'),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Example'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: CustomLineIndicatorBottomNavbar(
        selectedColor: Colors.blue,
        unSelectedColor: Colors.black54,
        backgroundColor: Colors.white,
        currentIndex: _selectedIndex,
        unselectedIconSize: 15,
        selectedIconSize: 20,
        onTap: (index) {
          setState(() {
            _selectedIndex = index;
          });
        },
        enableLineIndicator: true,
        lineIndicatorWidth: 3,
        indicatorType: IndicatorType.top,
        customBottomBarItems: [
          CustomBottomBarItems(
            label: 'Home',
            icon: Icons.home,
            isAssetsImage: false,
          ),
          CustomBottomBarItems(
            label: 'Account',
            assetsImagePath: accountImage,
            isAssetsImage: true,
          ),
          CustomBottomBarItems(
            label: 'Leaves',
            icon: Icons.calendar_today_outlined,
            isAssetsImage: false,
          ),
          CustomBottomBarItems(
            label: 'Loyalty',
            icon: Icons.card_giftcard_rounded,
            isAssetsImage: false,
          ),
          CustomBottomBarItems(
            label: 'Requests',
            assetsImagePath: accountImage,
            isAssetsImage: true,
          ),
        ],
      ),
    );
  }
}

带渐变的底部导航栏

如果您希望使用带有渐变效果的底部导航栏,只需取消注释并配置 gradient 属性即可:

CustomLineIndicatorBottomNavbar(
  ...
  gradient: LinearGradient(
    colors: [Colors.pink, Colors.yellow],
  ),
  ...
)

构造函数参数说明

参数名 默认值 描述 是否必填
icon - 底部栏图标。
label - 底部栏标签文本。
selectedColor - 选中的颜色。
unSelectedColor - 未选中的颜色。
unSelectedFontSize 11 未选中标签字体大小。
selectedFontSize 12 选中标签字体大小。
selectedIconSize 20 选中图标大小。
unselectedIconSize 15 未选中图标大小。
splashColor - 点击时的水波纹颜色。
currentIndex - 当前选中的索引。
onTap - 点击回调函数,用于处理用户点击事件。
index - 列表索引。
enableLineIndicator false 如果设置为true,则显示线条指示器。
lineIndicatorWidth 3 指示器线条宽度。
indicatorType top 指示器类型,例如top和bottom。
gradient - 渐变属性,用于启用渐变颜色。

通过这些配置选项,您可以根据需要自定义底部导航栏的外观和行为。


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

1 回复

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


当然,以下是如何在Flutter项目中使用bottom_navbar_with_indicator插件来实现带有指示器的底部导航栏的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了bottom_navbar_with_indicator依赖项:

dependencies:
  flutter:
    sdk: flutter
  bottom_navbar_with_indicator: ^最新版本号  # 请替换为最新的版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤来设置底部导航栏:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:bottom_navbar_with_indicator/bottom_navbar_with_indicator.dart';
  1. 创建页面内容

为了演示,我们创建几个简单的页面。

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(child: Text('Home Page'));
  }
}

class SearchPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(child: Text('Search Page'));
  }
}

class ProfilePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(child: Text('Profile Page'));
  }
}
  1. 设置底部导航栏
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BottomNavDemo(),
    );
  }
}

class BottomNavDemo extends StatefulWidget {
  @override
  _BottomNavDemoState createState() => _BottomNavDemoState();
}

class _BottomNavDemoState extends State<BottomNavDemo> with SingleTickerProviderStateMixin {
  int _selectedIndex = 0;

  final List<Widget> _widgetOptions = <Widget>[
    HomePage(),
    SearchPage(),
    ProfilePage(),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bottom Navigation Bar with Indicator'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: BottomNavBarWithIndicator(
        currentIndex: _selectedIndex,
        onTap: _onItemTapped,
        items: [
          BottomNavBarItem(
            icon: Icon(Icons.home),
            title: Text('Home'),
          ),
          BottomNavBarItem(
            icon: Icon(Icons.search),
            title: Text('Search'),
          ),
          BottomNavBarItem(
            icon: Icon(Icons.person),
            title: Text('Profile'),
          ),
        ],
      ),
    );
  }
}

在上述代码中,我们创建了一个简单的Flutter应用,其中包含三个页面(Home, Search, Profile)。BottomNavBarWithIndicator被用作底部导航栏,并通过onTap回调函数来处理导航栏项的点击事件。

请注意,BottomNavBarItembottom_navbar_with_indicator插件提供的用于定义导航栏项的类。每个项包含一个图标和一个标题。

希望这个示例代码能帮助你理解如何在Flutter项目中使用bottom_navbar_with_indicator插件来实现底部导航栏带指示器的功能。如果你有任何进一步的问题,请随时询问!

回到顶部