Flutter水滴导航栏插件advance_water_drop_nav_bar的使用

Flutter水滴导航栏插件advance_water_drop_nav_bar的使用

advance_water_drop_nav_bar 是一个基于 water_drop_nav_bar 的 Flutter 插件,用于实现带有水滴效果的导航栏。

开始使用

这个项目是一个 Flutter 插件包的起点,它包含了 Android 和/或 iOS 平台的具体实现代码。

对于 Flutter 开发的帮助,您可以查看 Flutter 官方文档,其中包含教程、示例、移动开发指南以及完整的 API 参考。

接下来,我们通过一个完整的示例来展示如何在 Flutter 应用中使用 advance_water_drop_nav_bar 插件。

示例代码

以下是 advance_water_drop_nav_bar 的使用示例:

import 'package:advance_water_drop_nav_bar/advance_water_drop_nav_bar.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.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(
      // debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        canvasColor: const Color.fromARGB(255, 232, 232, 232),
      ),
      home: const MyHomePage(),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  final Color navigationBarColor = Colors.white;
  int selectedIndex = 0;
  late PageController pageController;

  [@override](/user/override)
  void initState() {
    super.initState();
    pageController = PageController(initialPage: selectedIndex);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    /// [AnnotatedRegion<SystemUiOverlayStyle>] 仅适用于 Android 黑色导航栏。3按钮导航控制(传统)

    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle(
        systemNavigationBarColor: navigationBarColor,
        systemNavigationBarIconBrightness: Brightness.dark,
      ),
      child: Scaffold(
        // backgroundColor: Colors.grey,
        body: PageView(
          physics: const NeverScrollableScrollPhysics(),
          controller: pageController,
          children: [
            Container(
              alignment: Alignment.center,
              child: Icon(
                Icons.bookmark_rounded,
                size: 56,
                color: Colors.amber[400],
              ),
            ),
            Container(
              alignment: Alignment.center,
              child: Icon(
                Icons.favorite_rounded,
                size: 56,
                color: Colors.red[400],
              ),
            ),
            Container(
              alignment: Alignment.center,
              child: Icon(
                Icons.email_rounded,
                size: 56,
                color: Colors.green[400],
              ),
            ),
            Container(
              alignment: Alignment.center,
              child: Icon(
                Icons.folder_rounded,
                size: 56,
                color: Colors.blue[400],
              ),
            ),
          ],
        ),
        bottomNavigationBar: WaterDropNavBar(
          backgroundColor: navigationBarColor,
          onItemSelected: (int index) {
            setState(() {
              selectedIndex = index;
            });
            pageController.animateToPage(selectedIndex,
                duration: const Duration(milliseconds: 400),
                curve: Curves.easeOutQuad);
          },
          selectedIndex: selectedIndex,
          barItems: [
            BarItem(
              filledIcon: Icons.bookmark_rounded,
              outlinedIcon: Icons.bookmark_border_rounded,
              btext: "Bookmark"
            ),
            BarItem(
                filledIcon: Icons.favorite_rounded,
                outlinedIcon: Icons.favorite_border_rounded,
                btext: "Favorite",
            ),
            BarItem(
              filledIcon: Icons.email_rounded,
              outlinedIcon: Icons.email_outlined,
              btext: "Email"
            ),
            BarItem(
              filledIcon: Icons.folder_rounded,
              outlinedIcon: Icons.folder_outlined,
              btext: "Profile"
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 advance_water_drop_nav_bar 插件的 Flutter 代码示例。这个插件允许你创建一个水滴形状的导航栏,非常适合用于底部导航。

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

dependencies:
  flutter:
    sdk: flutter
  advance_water_drop_nav_bar: ^latest_version  # 请替换为最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,是一个完整的 Flutter 应用示例,展示如何使用 advance_water_drop_nav_bar

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Advance Water Drop Nav Bar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  int _currentIndex = 0;

  final List<String> _pages = [
    'Home',
    'Search',
    'Profile',
    'Settings',
  ];

  final List<IconData> _icons = [
    Icons.home,
    Icons.search,
    Icons.person,
    Icons.settings,
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Advance Water Drop Nav Bar Demo'),
      ),
      body: Center(
        child: Text(_pages[_currentIndex]),
      ),
      bottomNavigationBar: AdvanceWaterDropNavBar(
        alignment: MainAxisAlignment.spaceAround,
        initialSelectedIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: List.generate(
          _pages.length,
          (index) => AdvanceWaterDropNavBarItem(
            icon: Icon(
              _icons[index],
              color: Colors.grey,
            ),
            activeIcon: Icon(
              _icons[index],
              color: Colors.blue,
            ),
            label: Text(
              _pages[index],
              style: TextStyle(color: Colors.grey),
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. 依赖添加:确保在 pubspec.yaml 中添加了 advance_water_drop_nav_bar 依赖。
  2. MaterialApp:创建了一个基本的 Flutter 应用。
  3. HomeScreen:一个包含状态管理的主屏幕,用于处理导航栏的点击事件。
  4. AdvanceWaterDropNavBar:用于创建水滴形状的底部导航栏。
  5. AdvanceWaterDropNavBarItem:定义每个导航项,包括图标、激活状态的图标和标签。

你可以根据需要自定义图标、颜色、标签等属性,以适应你的应用需求。

希望这个示例能帮助你更好地理解和使用 advance_water_drop_nav_bar 插件!

回到顶部