Flutter隐藏底部导航栏插件hidding_bottom_navigation_bar的使用

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

Flutter隐藏底部导航栏插件hidding_bottom_navigation_bar的使用

HiddingBottomNavigationBar 是一个轻量级库,用于创建和控制隐藏的底部导航栏。当向下滚动时,底部导航栏会消失;当向上滚动时,底部导航栏会重新出现。非常方便。

特性

简单且功能强大的 HiddingBottomNavigationBar。其实现方式与 Flutter 的 BottomNavigationBar 相同,并扩展了使导航栏隐藏或显示的功能。此外,还提供了 onHide 和 onAppear 回调,以满足您的需求。

开始使用

通过以下命令安装依赖:

flutter pub add hidding_bottom_navigation_bar

使用示例

完整示例代码

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

// 主应用类
void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

// 主页面类
class HiddingBottomNavBarExample extends StatefulWidget {
  const HiddingBottomNavBarExample({super.key});

  [@override](/user/override)
  State<HiddingBottomNavBarExample> createState() => _HiddingBottomNavBarExampleState();
}

class _HiddingBottomNavBarExampleState extends State<HiddingBottomNavBarExample> {
  // 1. 声明 ScrollController
  final scrollController = ScrollController();

  // 页面列表
  late final List<Widget> _pages = [
    _Home(scrollController: scrollController),
    const _Tasks(),
    const _Settings()
  ];

  // 当前选中的页面索引
  int index = 0;

  // 更新页面索引的方法
  void setIndex(int position) => setState(() => index = position);

  [@override](/user/override)
  void dispose() {
    scrollController.dispose(); // 确保在销毁时释放 ScrollController
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[index], // 动态切换页面
      bottomNavigationBar: HiddingBottomNavigationBar(
        // 3. 将 ScrollController 传递给 HiddingBottomNavigationBar
        scrollController: scrollController,
        height: 70, // 设置导航栏高度
        type: FlexibleBottomNavigationBarType.fixed, // 导航栏类型
        items: const [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'), // 首页图标
          BottomNavigationBarItem(icon: Icon(Icons.calendar_today), label: 'Tasks'), // 任务图标
          BottomNavigationBarItem(icon: Icon(Icons.settings), label: 'Settings'), // 设置图标
        ],
        onTap: setIndex, // 处理点击事件
        currentIndex: index, // 当前选中索引
        onAppear: () => print('ESTOY APARECIENDO'), // 导航栏出现回调
        onHide: () => print('ESTOY DESAPARECIENDO'), // 导航栏隐藏回调
      ),
    );
  }
}

// 任务页面
class _Tasks extends StatelessWidget {
  const _Tasks({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const Center(
      child: Text('Tasks'), // 显示任务文本
    );
  }
}

// 设置页面
class _Settings extends StatelessWidget {
  const _Settings({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const Center(
      child: Text('Settings'), // 显示设置文本
    );
  }
}

// 首页页面
class _Home extends StatelessWidget {
  const _Home({
    super.key,
    required this.scrollController, // 接收 ScrollController
  });

  final ScrollController scrollController;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ListView.separated(
        // 2. 将 ScrollController 传递给 ListView
        controller: scrollController,
        separatorBuilder: (context, index) => const Divider(color: Colors.grey),
        itemCount: 150, // 列表项数量
        itemBuilder: (ctx, i) {
          return SizedBox(
            height: 50, // 每个列表项的高度
            child: Text('Elemento número ${i + 1} de Home'), // 列表项内容
          );
        });
  }
}

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

1 回复

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


hidding_bottom_navigation_bar 是一个 Flutter 插件,用于在滚动页面时自动隐藏和显示底部导航栏。这个插件可以帮助你创建更流畅的用户体验,特别是在有滚动内容的页面上。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  hidding_bottom_navigation_bar: ^0.1.0  # 请使用最新版本

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

使用插件

以下是一个简单的示例,展示了如何在 Flutter 应用中使用 hidding_bottom_navigation_bar 插件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

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

  // 模拟页面内容
  final List<Widget> _pages = [
    ListView.builder(
      itemCount: 50,
      itemBuilder: (context, index) {
        return ListTile(
          title: Text('Item $index'),
        );
      },
    ),
    Center(child: Text('Page 2')),
    Center(child: Text('Page 3')),
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[_currentIndex],
      bottomNavigationBar: HiddingBottomNavigationBar(
        currentIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
          BottomNavigationBarItem(icon: Icon(Icons.search), label: 'Search'),
          BottomNavigationBarItem(icon: Icon(Icons.person), label: 'Profile'),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!