Flutter气泡导航栏插件bubble_navigation_bar的使用

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

Flutter气泡导航栏插件bubble_navigation_bar的使用

预览

Preview 1 Preview 2

BubbleNavigationBar 是一个易于使用的Flutter底部导航栏插件,具有独特的气泡效果。以下是如何使用该插件的具体步骤和示例代码。

使用方法

添加依赖

首先,在 pubspec.yaml 文件中添加 bubble_navigation_bar 作为依赖项:

dependencies:
  flutter:
    sdk: flutter
  bubble_navigation_bar: ^最新版本号

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

示例代码

以下是完整的示例代码,展示了如何在应用中集成 BubbleNavigationBar

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _pageController = PageController();
  int _index = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
    _pageController.addListener(() {
      setState(() {
        _index = _pageController.page!.round();
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Bubble Navigation Bar'),
      ),
      body: PageView(
        controller: _pageController,
        children: const [
          Center(child: Text('Home')),
          Center(child: Text('Colors')),
          Center(child: Text('Favorite')),
          Center(child: Text('Profile')),
          Center(child: Text('Settings')),
        ],
      ),
      bottomNavigationBar: BubbleNavigationBar(
        currentIndex: _index,
        onIndexChanged: (index) {
          _pageController.animateToPage(
            index,
            duration: const Duration(milliseconds: 240),
            curve: Curves.decelerate,
          );
        },
        items: const [
          BubbleNavItem(icon: Icon(Icons.home), label: 'Home'),
          BubbleNavItem(icon: Icon(Icons.color_lens), label: 'Colors'),
          BubbleNavItem(icon: Icon(Icons.star), label: 'Favorite'),
          BubbleNavItem(icon: Icon(Icons.person), label: 'Profile'),
          BubbleNavItem(icon: Icon(Icons.settings), label: 'Settings'),
        ],
        backgroundColor: Colors.black,
        selectedItemColor: Colors.orange,
        unselectedItemColor: Colors.orange.shade200,
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用bubble_navigation_bar插件的一个详细示例。这个插件允许你创建一个带有气泡动画效果的底部导航栏。

步骤 1: 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  bubble_navigation_bar: ^2.2.4  # 请检查最新版本号

步骤 2: 导入插件

在你的Dart文件中(通常是main.dart),导入bubble_navigation_bar

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

步骤 3: 创建页面

为了演示导航功能,我们需要创建几个简单的页面。这里我们创建三个示例页面:

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'));
  }
}

步骤 4: 创建主应用

在主应用中,我们将使用BubbleNavigationBar来创建底部导航栏,并管理页面之间的导航:

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

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

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

class _MyHomePageState extends State<MyHomePage> 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('Bubble Navigation Bar Example'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: BubbleNavigationBar(
        onItemClick: (index) => _onItemTapped(index),
        items: [
          BubbleNavigationBarItem(
            icon: Icons.home,
            title: "Home",
          ),
          BubbleNavigationBarItem(
            icon: Icons.search,
            title: "Search",
          ),
          BubbleNavigationBarItem(
            icon: Icons.person,
            title: "Profile",
          ),
        ],
        currentIndex: _selectedIndex,
      ),
    );
  }
}

解释

  1. 依赖管理:在pubspec.yaml中添加bubble_navigation_bar依赖。
  2. 导入包:在Dart文件中导入bubble_navigation_barflutter/material
  3. 创建页面:创建三个简单的页面(HomePageSearchPageProfilePage)。
  4. 主应用
    • 使用MaterialApp作为应用的根。
    • 使用Scaffold来组织页面结构。
    • body中显示当前选中的页面。
    • bottomNavigationBar中使用BubbleNavigationBar,并设置点击事件来处理页面切换。

这个示例展示了如何使用bubble_navigation_bar插件来创建一个具有气泡动画效果的底部导航栏,并在不同页面之间进行切换。你可以根据需要自定义每个导航项的图标和标题。

回到顶部