Flutter浮动导航栏插件floating_navbar的使用

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

Flutter浮动导航栏插件floating_navbar的使用

floating_navbar 是一个简单且可自定义的浮动底部导航栏插件,它可以帮助您快速构建具有吸引力和功能性的应用程序界面。下面将详细介绍如何在Flutter项目中使用该插件。

Usage

Add Dependency

首先,在您的pubspec.yaml文件中添加依赖:

dependencies:
  floating_navbar: ^2.0.2

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

Import Package

在需要使用浮动导航栏的Dart文件顶部导入包:

import 'package:floating_navbar/floating_navbar.dart';

Use in Code as Follows

接下来是具体的使用方法,我们将创建一个简单的Flutter应用来展示如何使用floating_navbar。此示例包括两个页面:HomePageMyPage,以及一个带有两个图标的浮动导航栏。

完整示例代码

import 'package:floating_navbar/floating_navbar.dart';
import 'package:floating_navbar/floating_navbar_item.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: FloatingNavBarScreen(),
    );
  }
}

class FloatingNavBarScreen extends StatefulWidget {
  @override
  _FloatingNavBarScreenState createState() => _FloatingNavBarScreenState();
}

class _FloatingNavBarScreenState extends State<FloatingNavBarScreen> {
  int currentIndex = 0;

  final List<Widget> _pages = [
    HomePage(),
    MyPage(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[currentIndex],
      bottomNavigationBar: FloatingNavbar(
        currentIndex: currentIndex,
        onTap: (index) {
          setState(() {
            currentIndex = index;
          });
        },
        items: [
          FloatingNavbarItem(
            iconData: Icons.home,
            title: 'Home',
          ),
          FloatingNavbarItem(
            iconData: Icons.account_circle,
            title: 'Account',
          ),
        ],
        color: Colors.green,
        selectedIconColor: Colors.white,
        unselectedIconColor: Colors.white.withOpacity(0.6),
        hapticFeedback: true,
        horizontalPadding: 40,
        showTitle: true,
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text(
            "Welcome to Home Page",
            style: TextStyle(
              fontWeight: FontWeight.bold,
              fontSize: 18,
            ),
          ),
          SizedBox(height: 20),
          TextField(
            decoration: InputDecoration(
              hintText: "Type something...",
            ),
          ),
        ],
      ),
    );
  }
}

class MyPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: Text(
          "This is My Page",
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 18,
          ),
        ),
      ),
    );
  }
}

Explanation

  • FloatingNavbar: 创建了一个浮动导航栏,通过设置currentIndexonTap回调函数来管理当前选中的页面。
  • FloatingNavbarItem: 定义了导航栏上的每个条目,包含图标和标题。
  • _pages: 包含所有页面的列表,根据currentIndex显示相应的页面。

这样就完成了一个基本的浮动导航栏实现。您可以根据自己的需求调整样式、颜色和其他属性,以适应您的应用设计。


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

1 回复

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


当然,以下是如何在Flutter中使用floating_navbar插件来实现一个浮动导航栏的示例代码。这个插件允许你创建一个浮动在内容之上的导航栏,这对于需要持久导航的应用非常有用。

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

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

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

接下来,在你的Flutter应用中,你可以按照以下方式使用FloatingNavbar

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

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

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

class FloatingNavBarDemo extends StatefulWidget {
  @override
  _FloatingNavBarDemoState createState() => _FloatingNavBarDemoState();
}

class _FloatingNavBarDemoState extends State<FloatingNavBarDemo> {
  int _selectedIndex = 0;

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Floating NavBar Demo'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
      bottomNavigationBar: FloatingNavBar(
        items: [
          FloatingNavBarItem(
            icon: Icons.home,
            title: 'Home',
          ),
          FloatingNavBarItem(
            icon: Icons.search,
            title: 'Search',
          ),
          FloatingNavBarItem(
            icon: Icons.settings,
            title: 'Settings',
          ),
        ],
        currentIndex: _selectedIndex,
        onItemChanged: _onItemTapped,
        floating: true, // 设置为true以启用浮动效果
        margin: EdgeInsets.all(10), // 可选:设置外边距
        backgroundColor: Colors.white, // 可选:设置背景颜色
        elevation: 4, // 可选:设置阴影大小
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml文件中添加floating_navbar依赖。
  2. 导入包:在Dart文件中导入floating_navbar包。
  3. 构建UI
    • 使用Scaffold作为主布局。
    • bottomNavigationBar属性中使用FloatingNavBar
    • 配置FloatingNavBarItem列表,每个项包含图标和标题。
    • 设置currentIndex来跟踪当前选中的项。
    • 使用onItemChanged回调来处理项点击事件。
    • 设置floating属性为true以启用浮动效果。
    • 你可以根据需要调整其他属性,如marginbackgroundColorelevation

这个示例展示了如何创建一个包含三个导航项的浮动导航栏,并且当用户点击不同的项时,可以更新主内容区域。你可以根据自己的需求进一步定制和扩展这个示例。

回到顶部