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

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

ss_bottom_navbar 是一个现代的 Flutter 底部导航栏插件,兼容 Android 和 iOS。您可以自由地自定义它。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  ss_bottom_navbar: 0.1.1

然后运行以下命令以获取依赖项:

flutter pub get

导入插件:

import 'package:ss_bottom_navbar/src/ss_bottom_navbar.dart';

示例代码

以下是一个完整的示例代码,展示如何使用 ss_bottom_navbar 插件。

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:ss_bottom_navbar/ss_bottom_navbar.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SS Bottom NavBar Example App',
      home: App(),
    );
  }
}

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  final _isVisible = true;

  final _colors = [Colors.red, Colors.blue, Colors.green, Colors.orange, Colors.teal];
  final items = [
    SSBottomNavItem(text: 'Home', iconData: Icons.home),
    SSBottomNavItem(text: 'Store', iconData: Icons.store),
    SSBottomNavItem(text: 'Add', iconData: Icons.add, isIconOnly: true),
    SSBottomNavItem(text: 'Explore', iconData: Icons.explore),
    SSBottomNavItem(text: 'Profile', iconData: Icons.person),
  ];

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (_) => SSBottomBarState(),
      child: Consumer<SSBottomBarState>(
        builder: (context, state, _) {
          return Scaffold(
            body: IndexedStack(
              index: state.selected,
              children: _buildPages(),
            ),
            floatingActionButton: FloatingActionButton(
              onPressed: () {
                state.setSelected(3);
              },
              child: Icon(_isVisible ? Icons.keyboard_arrow_down : Icons.keyboard_arrow_up),
            ),
            bottomNavigationBar: SSBottomNav(
              items: items,
              state: state,
              color: Colors.black,
              selectedColor: Colors.white,
              unselectedColor: Colors.black,
              visible: _isVisible,
              bottomSheetWidget: _bottomSheet(),
              showBottomSheetAt: 2,
            ),
          );
        },
      ),
    );
  }

  Widget _page(Color color) => Container(color: color);

  List<Widget> _buildPages() => _colors.map((color) => _page(color)).toList();

  Widget _bottomSheet() => Container(
        color: Colors.white,
        child: Column(
          children: [
            ListTile(
              leading: Icon(Icons.camera_alt),
              title: Text('Use Camera'),
            ),
            ListTile(
              leading: Icon(Icons.photo_library),
              title: Text('Choose from Gallery'),
            ),
            ListTile(
              leading: Icon(Icons.edit),
              title: Text('Write a Story'),
              onTap: () {
                Navigator.maybePop(context);
              },
            ),
          ],
        ),
      );
}

效果图

使用说明

创建项目

首先,创建一个 Flutter 项目并安装 ss_bottom_navbar 插件。

初始化状态
final _isVisible = true;

final items = [
  SSBottomNavItem(text: 'Home', iconData: Icons.home),
  SSBottomNavItem(text: 'Store', iconData: Icons.store),
  SSBottomNavItem(text: 'Add', iconData: Icons.add, isIconOnly: true),
  SSBottomNavItem(text: 'Explore', iconData: Icons.explore),
  SSBottomNavItem(text: 'Profile', iconData: Icons.person),
];

SSBottomBarState _state = SSBottomBarState();
配置底部导航栏
SSBottomNav(
  items: items,
  state: _state,
  color: Colors.black,
  selectedColor: Colors.white,
  unselectedColor: Colors.black,
  onTabSelected: (index) {
    debugPrint(index);
    setState(() {
      _index = index;
    });
  }
),
带有底部弹出框的示例
SSBottomNav(
  items: items,
  state: _state,
  color: Colors.black,
  selectedColor: Colors.white,
  unselectedColor: Colors.black,
  visible: isVisible,
  bottomSheetWidget: Container(),
  showBottomSheetAt: 2,
  onTabSelected: (index) {}
),

自定义选项

参数名称 类型 描述
items List<SSBottomNavItem> SSBottomNavItem 列表
state SSBottomBarState 状态管理器
iconSize double 图标大小
backgroundColor Color 背景颜色
color Color 滑块颜色
selectedColor Color 选中时的颜色
unselectedColor Color 未选中时的颜色
onTabSelected ValueChanged<int> 选择时的回调函数
shadow List<BoxShadow> 阴影效果
visible bool 是否可见
bottomSheetWidget Widget 底部弹出框内容
showBottomSheetAt int 显示底部弹出框的索引值
bottomSheetHistory bool 是否返回上一个标签页
dismissedByAnimation ValueChanged<bool> 是否通过动画关闭弹出框的回调函数

底部弹出框(SSBottomSheet)

如果需要使用底部弹出框,可以使用 SSBottomSheet

使用方法
SSBottomSheet.show(
  context: context,
  child: bottomSheet(),
  onPressed: (offset) {}
);
示例
bottomSheet() => Container(
  color: Colors.white,
  child: Column(
    children: [
      ListTile(
        leading: Icon(Icons.camera_alt),
        title: Text('Use Camera'),
      ),
      ListTile(
        leading: Icon(Icons.photo_library),
        title: Text('Choose from Gallery'),
      ),
      ListTile(
        leading: Icon(Icons.edit),
        title: Text('Write a Story'),
      ),
    ],
  ),
);
关闭底部弹出框
Navigator.maybePop(context);

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

1 回复

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


ss_bottom_navbar 是一个用于 Flutter 的底部导航栏插件,它提供了丰富的自定义选项,使得开发者可以轻松地创建一个漂亮的底部导航栏。以下是使用 ss_bottom_navbar 的基本步骤和示例代码。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  ss_bottom_navbar: ^1.0.0  # 请检查最新版本

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

2. 基本使用

以下是一个简单的示例,展示了如何使用 ss_bottom_navbar 创建一个底部导航栏。

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

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

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

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

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

  final List<Widget> _pages = [
    Center(child: Text('Home Page')),
    Center(child: Text('Search Page')),
    Center(child: Text('Profile Page')),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SS Bottom Navbar Example'),
      ),
      body: _pages[_currentIndex],
      bottomNavigationBar: SSBottomNavBar(
        currentIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: [
          SSBottomNavBarItem(icon: Icons.home, title: 'Home'),
          SSBottomNavBarItem(icon: Icons.search, title: 'Search'),
          SSBottomNavBarItem(icon: Icons.person, title: 'Profile'),
        ],
      ),
    );
  }
}

3. 自定义选项

ss_bottom_navbar 提供了多种自定义选项,例如:

  • 颜色:可以自定义导航栏的背景颜色、选中项的颜色、未选中项的颜色等。
  • 动画:可以启用或禁用导航栏项的动画效果。
  • 图标大小:可以自定义导航栏图标的大小。
  • 标题字体:可以自定义导航栏标题的字体样式。

以下是一个自定义的示例:

SSBottomNavBar(
  currentIndex: _currentIndex,
  onTap: (index) {
    setState(() {
      _currentIndex = index;
    });
  },
  items: [
    SSBottomNavBarItem(icon: Icons.home, title: 'Home'),
    SSBottomNavBarItem(icon: Icons.search, title: 'Search'),
    SSBottomNavBarItem(icon: Icons.person, title: 'Profile'),
  ],
  backgroundColor: Colors.blue,
  selectedColor: Colors.white,
  unselectedColor: Colors.grey,
  iconSize: 30,
  animationDuration: Duration(milliseconds: 300),
  showTitle: true,
  titleStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
);
回到顶部