Flutter可扩展底部导航栏插件bottom_sheet_expandable_bar的使用

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

Flutter可扩展底部导航栏插件bottom_sheet_expandable_bar的使用

bottom_sheet_expandable_bar 是一个用于Flutter的插件,它创建了一个带有显示底部表单功能的底部导航栏。本文将详细介绍如何安装和使用这个插件,并提供完整的示例代码。

安装

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

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

然后运行 flutter pub get 来获取包。

使用

导入所需的包:

import 'package:bottom_sheet_expandable_bar/bottom_sheet_bar_icon.dart';
import 'package:bottom_sheet_expandable_bar/bottom_sheet_expandable_bar.dart';

在你的 MaterialApp 主题中添加以下配置以避免意外行为:

theme: ThemeData(
  /// 添加此行
  bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.transparent),
),

示例代码

下面是一个完整的示例,展示了如何使用 BottomBarSheetBottomSheetBarIcon 组件来创建一个带扩展功能的底部导航栏:

import 'package:flutter/material.dart';
import 'package:bottom_sheet_expandable_bar/bottom_sheet_bar_icon.dart';
import 'package:bottom_sheet_expandable_bar/bottom_sheet_expandable_bar.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Bottom Bar Sheet Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
        bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.transparent),
      ),
      debugShowCheckedModeBanner: false,
      home: MyHomePage(),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  int _currentIndex = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Bottom Bar Sheet Demo'),
        backgroundColor: Colors.blueGrey.shade900,
        centerTitle: true,
      ),
      body: Container(
        color: Colors.blueGrey.shade800,
        child: Center(
          child: Text('Demo', style: TextStyle(color: Colors.white)),
        ),
      ),
      bottomSheet: BottomBarSheet(
        buttonPosition: ButtonBottomBarPosition.center,
        innerChild: Center(child: Text('Bottom sheet')),
        currentIndex: _currentIndex,
        curve: Curves.bounceIn,
        backgroundBarColor: Colors.grey,
        backgroundColor: Colors.yellowAccent,
        children: [
          BottomSheetBarIcon(
            icon: Icon(Icons.home),
            color: Colors.redAccent,
            onTap: () {
              setState(() {
                _currentIndex = 0;
              });
            },
          ),
          BottomSheetBarIcon(
            icon: Icon(Icons.person),
            color: Colors.blueAccent,
            onTap: () {
              setState(() {
                _currentIndex = 1;
              });
            },
          ),
          BottomSheetBarIcon(
            icon: Icon(Icons.edit),
            color: Colors.blue[800],
            onTap: () {
              setState(() {
                _currentIndex = 2;
              });
            },
          ),
          BottomSheetBarIcon(
            icon: Icon(Icons.star),
            color: Colors.orangeAccent,
            onTap: () {
              setState(() {
                _currentIndex = 3;
              });
            },
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 bottom_sheet_expandable_bar 插件来实现可扩展底部导航栏的示例代码。这个插件允许你创建一个可扩展的底部导航栏,用户可以通过向上滑动来展开更多的选项。

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

dependencies:
  flutter:
    sdk: flutter
  bottom_sheet_expandable_bar: ^x.y.z  # 替换为最新版本号

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

接下来,你可以在你的 Flutter 应用中使用这个插件。下面是一个完整的示例代码:

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late ExpandableController _controller;

  @override
  void initState() {
    super.initState();
    _controller = ExpandableController();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bottom Sheet Expandable Bar Demo'),
      ),
      body: Center(
        child: Text('Swipe up from the bottom to expand the navigation bar'),
      ),
      bottomNavigationBar: BottomSheetExpandableBar(
        controller: _controller,
        expandedHeight: 200, // 设置展开后的高度
        backgroundColor: Colors.white,
        expandedBackgroundColor: Colors.white,
        borderRadius: BorderRadius.circular(16),
        elevation: 4,
        leading: IconButton(
          icon: Icon(Icons.menu),
          onPressed: () {},
        ),
        trailing: IconButton(
          icon: Icon(Icons.more_vert),
          onPressed: () {},
        ),
        items: [
          BottomSheetExpandableBarItem(
            icon: Icon(Icons.home),
            title: Text('Home'),
            onPressed: () {
              Navigator.pushNamed(context, '/home');
              _controller.collapse(); // 点击后收起
            },
          ),
          BottomSheetExpandableBarItem(
            icon: Icon(Icons.search),
            title: Text('Search'),
            onPressed: () {
              Navigator.pushNamed(context, '/search');
              _controller.collapse(); // 点击后收起
            },
          ),
          BottomSheetExpandableBarItem(
            icon: Icon(Icons.add),
            title: Text('Add'),
            onPressed: () {
              Navigator.pushNamed(context, '/add');
              _controller.collapse(); // 点击后收起
            },
          ),
          // 你可以添加更多项
        ],
        moreItems: [
          BottomSheetExpandableBarItem(
            icon: Icon(Icons.settings),
            title: Text('Settings'),
            onPressed: () {
              Navigator.pushNamed(context, '/settings');
              _controller.collapse(); // 点击后收起
            },
          ),
          // 你可以添加更多“更多”项
        ],
      ),
    );
  }
}

在这个示例中,我们创建了一个基本的 Flutter 应用,其中包含一个可扩展的底部导航栏。底部导航栏由 BottomSheetExpandableBar 组件实现,它包含了一些默认项和一个“更多”选项。当用户点击某个项时,应用会导航到一个新的页面,并且底部导航栏会自动收起。

请注意,这个示例假设你有一些路由配置来处理导航(例如 /home, /search, /add, /settings)。你可能需要在你的应用中添加相应的路由配置。

此外,这个示例使用了 ExpandableController 来控制底部导航栏的展开和收起状态。你可以在需要的地方调用 _controller.expand()_controller.collapse() 方法来控制导航栏的状态。

回到顶部