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

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

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

简介

google_nav_bar 是一个为Flutter设计的现代化Google风格底部导航栏。它具有丰富的自定义选项,可以轻松地集成到你的应用中。

google_nav_bar

特性:

  • 由设计师Aurelien Salomon设计并由sooxt98开发。
  • 支持多种样式和动画效果。
  • 可以通过GNav属性全局设置标签样式,也可以通过GButton属性单独设置每个标签的样式。

开始使用

添加依赖

pubspec.yaml文件中添加google_nav_bar依赖:

dependencies:
  google_nav_bar: ^5.0.7

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

导入包

在Dart代码中导入google_nav_bar

import 'package:google_nav_bar/google_nav_bar.dart';

使用示例

下面是一个完整的示例,展示了如何使用google_nav_bar创建一个带有四个标签(Home、Likes、Search、Profile)的底部导航栏,并根据用户选择显示不同的页面内容。

import 'package:flutter/material.dart';
import 'package:google_nav_bar/google_nav_bar.dart';
import 'package:line_icons/line_icons.dart';

void main() => runApp(MaterialApp(
    builder: (context, child) {
      return Directionality(textDirection: TextDirection.ltr, child: child!);
    },
    title: 'GNav',
    theme: ThemeData(
      primaryColor: Colors.grey[800],
    ),
    home: Example()));

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  int _selectedIndex = 0;
  static const TextStyle optionStyle =
      TextStyle(fontSize: 30, fontWeight: FontWeight.w600);
  static const List<Widget> _widgetOptions = <Widget>[
    Text(
      'Home',
      style: optionStyle,
    ),
    Text(
      'Likes',
      style: optionStyle,
    ),
    Text(
      'Search',
      style: optionStyle,
    ),
    Text(
      'Profile',
      style: optionStyle,
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        elevation: 20,
        title: const Text('GoogleNavBar'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: Container(
        decoration: BoxDecoration(
          color: Colors.white,
          boxShadow: [
            BoxShadow(
              blurRadius: 20,
              color: Colors.black.withOpacity(.1),
            )
          ],
        ),
        child: SafeArea(
          child: Padding(
            padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 8),
            child: GNav(
              rippleColor: Colors.grey[300]!,
              hoverColor: Colors.grey[100]!,
              gap: 8,
              activeColor: Colors.black,
              iconSize: 24,
              padding: EdgeInsets.symmetric(horizontal: 20, vertical: 12),
              duration: Duration(milliseconds: 400),
              tabBackgroundColor: Colors.grey[100]!,
              color: Colors.black,
              tabs: [
                GButton(
                  icon: LineIcons.home,
                  text: 'Home',
                ),
                GButton(
                  icon: LineIcons.heart,
                  text: 'Likes',
                ),
                GButton(
                  icon: LineIcons.search,
                  text: 'Search',
                ),
                GButton(
                  icon: LineIcons.user,
                  text: 'Profile',
                ),
              ],
              selectedIndex: _selectedIndex,
              onTabChange: (index) {
                setState(() {
                  _selectedIndex = index;
                });
              },
            ),
          ),
        ),
      ),
    );
  }
}

关键点解释

  • GNav: 这是主要的导航栏组件,包含了所有与导航相关的配置项。
  • GButton: 每个标签按钮都由GButton表示,你可以为其指定图标和文本。
  • onTabChange: 当用户点击某个标签时触发此回调函数,更新当前选中的索引。

希望这个例子能帮助你快速上手google_nav_bar!如果你有任何问题或需要进一步的帮助,请随时提问。


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

1 回复

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


当然,我可以为你提供一个关于如何在Flutter中使用google_nav_bar插件来实现底部导航栏的示例代码。google_nav_bar是一个非常流行的Flutter插件,用于创建类似Google风格的底部导航栏。

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

dependencies:
  flutter:
    sdk: flutter
  google_nav_bar: ^5.0.0  # 请检查最新版本号

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

接下来,你可以在你的Flutter项目中创建一个底部导航栏。以下是一个完整的示例代码:

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

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

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

class BottomNavBarScreen extends StatefulWidget {
  @override
  _BottomNavBarScreenState createState() => _BottomNavBarScreenState();
}

class _BottomNavBarScreenState extends State<BottomNavBarScreen> with SingleTickerProviderStateMixin {
  int _selectedIndex = 0;
  final List<GNav> _navItems = [
    GNav(
      icon: Icons.home,
      text: 'Home',
    ),
    GNav(
      icon: Icons.search,
      text: 'Search',
    ),
    GNav(
      icon: Icons.library_books,
      text: 'Library',
    ),
    GNav(
      icon: Icons.person,
      text: 'Profile',
    ),
    GNav(
      icon: Icons.settings,
      text: 'Settings',
    ),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bottom Navigation Bar'),
      ),
      body: Center(
        child: _navItems[_selectedIndex].text,
      ),
      bottomNavigationBar: GNavigationBar(
        color: Colors.white,
        backgroundColor: Colors.blue,
        activeColor: Colors.grey[800]!,
        inactiveColor: Colors.grey[400]!,
        icons: _navItems.map((item) => item.icon).toList(),
        texts: _navItems.map((item) => item.text).toList(),
        selectedIndex: _selectedIndex,
        onTabSelected: _onTabTapped,
        width: 100,
        height: 60,
        radius: 25,
        animationDuration: 300,
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个MyApp类,它是应用的根部件。
  2. BottomNavBarScreen是一个包含底部导航栏的StatefulWidget。
  3. _BottomNavBarScreenState类维护了一个_selectedIndex状态变量,用于跟踪当前选中的标签页。
  4. _navItems是一个包含底部导航栏项的列表,每个项都有一个图标和文本。
  5. _onTabTapped方法用于更新_selectedIndex,当用户点击一个标签页时调用。
  6. GNavigationBargoogle_nav_bar插件提供的底部导航栏组件,我们将其添加到ScaffoldbottomNavigationBar属性中。

运行这个代码,你将看到一个包含五个标签页的底部导航栏,每个标签页都有一个图标和文本。当你点击不同的标签页时,_selectedIndex会更新,但在这个示例中,我们只更新了显示的文本。你可以根据需要修改body中的内容来显示不同的页面。

回到顶部