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

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

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

spincircle_bottom_bar 是一个为 Flutter 应用程序提供的易于实现的旋转型底部导航栏。本文将详细介绍该插件的当前特性、使用方法,并提供一个完整的示例代码。

当前特性

  • 初始版本发布
  • 可自定义标签图标和文本(活动状态和非活动状态)
  • 自定义旋转型圆圈的颜色
  • 自定义底部导航栏和旋转型圆圈项的数量

Demo

spincircle_bottom_bar

使用方法

要使用 spincircle_bottom_bar,只需在 Scaffoldbody 中添加 SpinCircleBottomBarHolder,如下所示:

完整示例代码

import 'package:flutter/material.dart';
import 'package:spincircle_bottom_bar/modals.dart';
import 'package:spincircle_bottom_bar/spincircle_bottom_bar.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Spin Circle Bottom Bar',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        appBar: AppBar(
          title: Text("RetroPortal Studio"),
          backgroundColor: Colors.deepOrangeAccent,
        ),
        // Adding SpinCircleBottomBarHolder to body of Scaffold
        body: SpinCircleBottomBarHolder(
          bottomNavigationBar: SCBottomBarDetails(
            circleColors: [Colors.white, Colors.orange, Colors.redAccent],
            iconTheme: IconThemeData(color: Colors.black45),
            activeIconTheme: IconThemeData(color: Colors.orange),
            backgroundColor: Colors.white,
            titleStyle: TextStyle(color: Colors.black45, fontSize: 12),
            activeTitleStyle: TextStyle(color: Colors.black, fontSize: 12, fontWeight: FontWeight.bold),
            actionButtonDetails: SCActionButtonDetails(
              color: Colors.redAccent,
              icon: Icon(
                Icons.expand_less,
                color: Colors.white,
              ),
              elevation: 2,
            ),
            elevation: 2.0,
            items: [
              // Suggested count: 4
              SCBottomBarItem(icon: Icons.verified_user, title: "User", onPressed: () {}),
              SCBottomBarItem(icon: Icons.supervised_user_circle, title: "Details", onPressed: () {}),
              SCBottomBarItem(icon: Icons.notifications, title: "Notifications", onPressed: () {}),
              SCBottomBarItem(icon: Icons.details, title: "New Data", onPressed: () {}),
            ],
            circleItems: [
              // Suggested count: 3
              SCItem(icon: Icon(Icons.add), onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(builder: (context) => SecondScreen()));
              }),
              SCItem(icon: Icon(Icons.print), onPressed: () {}),
              SCItem(icon: Icon(Icons.map), onPressed: () {}),
            ],
            bnbHeight: 80, // Suggested Height 80
          ),
          child: Container(
            color: Colors.orangeAccent.withAlpha(55),
            child: Center(child: Text("Isn't this Awesome!")),
          ),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Screen"),
      ),
      body: Center(
        child: Text("This is the second screen!"),
      ),
    );
  }
}

路线图

计划增加更多的自定义选项。

许可证

MIT License

以上就是 spincircle_bottom_bar 插件的使用方法和示例代码。希望对您有所帮助!如果有任何问题或建议,欢迎随时提出。


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

1 回复

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


当然,以下是如何在Flutter项目中使用spincircle_bottom_bar插件来实现底部导航栏的示例代码。这个插件提供了一个带有动画效果的底部导航栏。

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

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

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

接下来是具体的实现代码:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  int _selectedIndex = 0;
  final List<Widget> _widgetOptions = <Widget>[
    Center(child: Text('Home')),
    Center(child: Text('Search')),
    Center(child: Text('Profile')),
    Center(child: Text('Settings')),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Bottom Navigation Bar Demo'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(_selectedIndex),
      ),
      bottomNavigationBar: SpinCircleBottomBar(
        items: [
          SpinCircleBottomBarItem(
            icon: Icons.home,
            title: 'Home',
            activeColor: Colors.blue,
          ),
          SpinCircleBottomBarItem(
            icon: Icons.search,
            title: 'Search',
            activeColor: Colors.green,
          ),
          SpinCircleBottomBarItem(
            icon: Icons.person,
            title: 'Profile',
            activeColor: Colors.orange,
          ),
          SpinCircleBottomBarItem(
            icon: Icons.settings,
            title: 'Settings',
            activeColor: Colors.red,
          ),
        ],
        selectedIndex: _selectedIndex,
        onItemSelected: _onItemTapped,
        animationDuration: 300, // 动画持续时间(毫秒)
      ),
    );
  }
}

代码说明:

  1. 依赖导入:确保你已经导入了flutterspincircle_bottom_bar包。
  2. 应用入口MyApp是应用的入口,它包含了一个MaterialApp,并设置了主题和主页。
  3. 主页逻辑MyHomePage是一个有状态的Widget,它包含了底部导航栏的逻辑。
    • _selectedIndex:当前选中的索引。
    • _widgetOptions:包含不同页面的Widget列表。
    • _onItemTapped:当底部导航栏的项被点击时调用的方法,用于更新当前选中的索引。
  4. 构建UI
    • Scaffold:包含了应用的主体和底部导航栏。
    • AppBar:应用的顶部栏。
    • Center:用于将当前选中的Widget居中显示。
    • SpinCircleBottomBar:自定义的底部导航栏,包含图标、标题、选中颜色等属性,以及当前选中的索引和点击事件处理函数。

通过以上代码,你可以在Flutter应用中实现一个带有动画效果的底部导航栏。你可以根据需要进一步自定义和扩展这个示例。

回到顶部