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

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

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

Curved Bottom Navigation Bar with Animations

curved_bottom_navigation_bar 是一个Flutter插件,用于创建现代、带有自定义动画、图标、标签和样式的曲面底部导航栏。它能够通过平滑的过渡和视觉上吸引人的设计来增强用户体验。

功能特性

  • 曲面设计:独特的UI曲面导航栏。
  • 自定义动画:选中项的平滑缩放、摇动和颜色过渡动画。
  • 完全自定义:自定义图标、标签、颜色和字体以匹配应用程序的主题。
  • 动画切换:如果喜欢更简单的UI,可以选择禁用动画。
  • 灵活的导航:通过提供的API轻松管理屏幕和项目。
  • 响应式设计:无缝适应各种屏幕尺寸。

预览

Curved Bottom Navigation Bar Demo

安装

将此插件添加到您的Flutter项目中,首先在 pubspec.yaml 文件中添加依赖:

dependencies:
  curved_bottom_navigation_bar: ^0.0.8

然后运行以下命令以获取依赖:

flutter pub get

在Dart文件中导入插件:

import 'package:curved_bottom_navigation_bar/curved_bottom_navigation_bar.dart';

使用示例

以下是一个完整的示例代码,展示了如何在应用程序中使用 CurvedBottomNavigationBar 小部件:

示例代码

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

/// 应用程序的入口点。
void main() {
  runApp(const MyApp());
}

/// 展示 [CurvedBottomNavigationBar] 的示例应用。
class MyApp extends StatefulWidget {
  /// 创建 [MyApp] 实例。
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  /// 当前选中的导航项索引。
  int _selectedIndex = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        /// 主屏幕的主体部分,包含 [CurvedBottomNavigationBar]。
        body: Center(
          child: CurvedBottomNavigationBar(
            /// 选中项的图标和标签颜色。
            selectedItemColor: Colors.red,

            /// 选中项标签的字体样式。
            selectedItemFontStyle: const TextStyle(
              fontWeight: FontWeight.normal,
              color: Colors.red,
            ),

            /// 导航栏的背景颜色。
            backgroundColor: Colors.white,

            /// 未选中项图标的颜色。
            unselectedIconColor: Colors.grey,

            /// 当前选中的项索引。
            selectedIndex: _selectedIndex,

            /// 点击导航项时的回调函数,更新 [selectedIndex] 以显示相应的屏幕。
            onItemTapped: (index) {
              setState(() {
                _selectedIndex = index;
              });
            },

            /// 每个导航项的标签。
            labels: const <String>[
              "Home",
              "Cart",
              "Notifications",
              "Profile"
            ],

            /// 每个导航项对应的图标。
            icons: const <IconData>[
              Icons.home,
              Icons.shopping_cart,
              Icons.notifications,
              Icons.person,
            ],

            /// 每个导航项对应显示的屏幕。
            screens: <Widget>[
              /// "Home" 选项卡的屏幕。
              Container(
                color: Colors.black,
                child: const Center(
                  child: Text(
                    'Home Screen',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              ),

              /// "Cart" 选项卡的屏幕。
              Container(
                color: Colors.green,
                child: const Center(
                  child: Text(
                    'Cart Screen',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              ),

              /// "Notifications" 选项卡的屏幕。
              Container(
                color: Colors.orange,
                child: const Center(
                  child: Text(
                    'Notifications Screen',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              ),

              /// "Profile" 选项卡的屏幕。
              Container(
                color: Colors.yellow,
                child: const Center(
                  child: Text(
                    'Profile Screen',
                    style: TextStyle(color: Colors.black),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用curved_bottom_navigation_bar插件的示例代码。这个插件允许你创建一个具有曲线效果的底部导航栏。

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

dependencies:
  flutter:
    sdk: flutter
  curved_bottom_navigation_bar: ^0.3.4  # 请确保使用最新版本

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

接下来,下面是一个完整的示例代码,展示了如何使用curved_bottom_navigation_bar插件:

import 'package:flutter/material.dart';
import 'package:curved_bottom_navigation_bar/curved_navigation_bar.dart';

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

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

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

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

  final List<Widget> _widgetOptions = [
    Text('Home'),
    Text('Search'),
    Text('Profile'),
    Text('Settings'),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Curved Bottom Navigation Bar Example'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: CurvedNavigationBar(
        index: _selectedIndex,
        height: 50.0,
        color: Colors.white,
        backgroundColor: Colors.blue,
        buttonBackgroundColor: Colors.blue.withOpacity(0.2),
        animationCurve: Curves.easeInOut,
        animationDuration: Duration(milliseconds: 600),
        onTap: _onItemTapped,
        pages: [
          Icon(Icons.home, color: Colors.blue),
          Icon(Icons.search, color: Colors.blue),
          Icon(Icons.person, color: Colors.blue),
          Icon(Icons.settings, color: Colors.blue),
        ],
      ),
    );
  }
}

代码解释:

  1. 依赖项:在pubspec.yaml文件中添加curved_bottom_navigation_bar依赖项。

  2. 主应用MyApp类是一个无状态小部件,它创建了应用的主要结构。

  3. 主页MyHomePage类是一个有状态小部件,用于管理导航栏的选中状态和显示的内容。

  4. 状态管理_selectedIndex变量跟踪当前选中的导航项。_widgetOptions列表存储每个导航项对应的内容。

  5. 导航项点击事件_onItemTapped方法更新_selectedIndex,从而触发UI更新。

  6. 底部导航栏CurvedNavigationBar小部件用于创建具有曲线效果的底部导航栏。它接受多个参数,包括当前选中的索引、高度、颜色、按钮背景颜色、动画曲线、动画持续时间和点击事件回调。

  7. 导航项:在pages参数中,我们为每个导航项提供了一个图标,并设置其颜色。

运行这个代码,你将看到一个简单的Flutter应用,底部有一个具有曲线效果的导航栏,点击不同的导航项将更新显示的内容。

回到顶部