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

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

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

SweetNavBar 是一个用于Flutter应用中创建渐变和浮动导航栏的插件。它易于使用,并且提供了美观的动画效果。本文将介绍如何在你的Flutter项目中集成和使用这个插件。

主要特性

  • 简单易用
  • 支持图标渐变
  • 提供多种美丽的动画效果

开始使用

首先,你需要在项目的 pubspec.yaml 文件中添加 sweet_nav_bar 作为依赖项:

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

请确保替换 ^最新版本号 为实际的最新版本号。你可以通过访问 sweet_nav_bar的pub.dev页面 来获取最新版本信息。

示例代码

下面是一个完整的示例demo,展示了如何在Flutter应用程序中实现带有渐变颜色的底部导航栏。

完整示例

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SweetNavBar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const SweetNaveBar(),
      debugShowCheckedModeBanner: false,
    );
  }
}

class SweetNaveBar extends StatefulWidget {
  const SweetNaveBar({Key? key}) : super(key: key);

  [@override](/user/override)
  State<SweetNaveBar> createState() => _SweetNavBarState();
}

class _SweetNavBarState extends State<SweetNaveBar> {
  final List<Widget> _items = [
    const Text('Home'),
    const Text('Business'),
    const Text('School'),
  ];

  int cIndex = 0;
  final iconLinearGradiant = <Color>[
    const Color.fromARGB(255, 251, 2, 197),
    const Color.fromARGB(255, 72, 3, 80)
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              colors: iconLinearGradiant,
            ),
          ),
          child: Center(child: _items[cIndex])),
      bottomNavigationBar: SweetNavBar(
        paddingGradientColor: const LinearGradient(colors: [
          Color.fromARGB(255, 72, 3, 80),
          Color.fromARGB(255, 72, 3, 80)
        ]),
        currentIndex: cIndex,
        paddingBackgroundColor: Colors.red,
        items: [
          SweetNavBarItem(
              sweetActive: const Icon(Icons.home),
              sweetIcon: const Icon(Icons.home_outlined),
              sweetLabel: 'Home',
              iconColors: iconLinearGradiant,
              sweetBackground: Colors.red),
          SweetNavBarItem(
              sweetIcon: const Icon(Icons.business), sweetLabel: 'Business'),
          SweetNavBarItem(
              sweetIcon: const Icon(Icons.school), sweetLabel: 'School'),
        ],
        onTap: (index) {
          setState(() {
            cIndex = index;
          });
        },
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用sweet_nav_bar插件来创建自定义导航栏的代码示例。

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

dependencies:
  flutter:
    sdk: flutter
  sweet_nav_bar: ^x.y.z  # 请将x.y.z替换为当前最新版本号

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

接下来,你可以在你的Flutter项目中使用SweetNavBar组件来创建自定义导航栏。以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SweetNavBar 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<Map<String, dynamic>> navItems = [
    {
      "title": "Home",
      "icon": Icons.home,
      "color": Colors.blue,
    },
    {
      "title": "Search",
      "icon": Icons.search,
      "color": Colors.green,
    },
    {
      "title": "Profile",
      "icon": Icons.person,
      "color": Colors.red,
    },
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: SweetNavBar(
        selectedIndex: selectedIndex,
        onItemClick: (index) {
          setState(() {
            selectedIndex = index;
          });
        },
        items: navItems.map((item) {
          return SweetNavBarItem(
            icon: Icon(
              item["icon"],
              color: item["color"],
            ),
            title: item["title"],
          );
        }).toList(),
      ),
      body: IndexedStack(
        index: selectedIndex,
        children: [
          Center(child: Text("Home Page")),
          Center(child: Text("Search Page")),
          Center(child: Text("Profile Page")),
        ],
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了sweet_nav_bar依赖项。
  2. 创建了一个MyApp类,它是应用程序的入口点。
  3. 创建了一个MyHomePage类,它包含了主要的UI逻辑。
  4. MyHomePage类中,我们定义了一个selectedIndex变量来跟踪当前选中的导航项。
  5. 定义了一个navItems列表,包含导航项的标题、图标和颜色。
  6. 使用SweetNavBar组件创建了一个底部导航栏,并将selectedIndexonItemClick回调传递给它。
  7. 使用IndexedStack组件来根据selectedIndex显示不同的页面内容。

这个示例展示了如何使用sweet_nav_bar插件来创建一个简单的自定义导航栏,并处理导航项的选择事件。你可以根据需要进一步自定义导航栏的样式和行为。

回到顶部