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

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

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

WaveBottomBar

这是一个底部导航栏小部件,它可以像波浪一样平滑地移动到活动位置,并且提供了许多属性供你配置。这个包小巧且简单,欢迎使用。

Demo

web预览

gif展示

图片展示

安装

pubspec.yaml文件中添加依赖:

dependencies:
    wave_bottom_bar: ^1.6.1

简单使用

以下是一个简单的使用示例:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

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

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('当前选中: $_selectedIndex'),
      ),
      bottomNavigationBar: WaveBottomBar(
        items: BarItem.simpleUse,
        onTap: (index) {
          _onItemTapped(index);
        },
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的应用,其中包含一个WaveBottomBar。当用户点击底部导航栏上的不同选项时,会更新选中的索引,并在页面中心显示当前选中的索引。

完整示例代码

以下是完整的示例代码,包括多个页面切换的实现:

import 'package:flutter/material.dart';

import 'page/common.dart';
import 'page/home.dart';
import 'page/use.dart';
import 'page/wave.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      routes: {
        "/home": (context) => HomePage(),
        "/common": (context) => CommonPage(),
        "/wave": (context) => WavePage(),
        "/use": (context) => UsePage(),
      },
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('首页'),
      ),
      body: Center(
        child: Text('这是首页'),
      ),
    );
  }
}

class CommonPage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('通用页'),
      ),
      body: Center(
        child: Text('这是通用页'),
      ),
    );
  }
}

class WavePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Wave页'),
      ),
      body: Center(
        child: Text('这是Wave页'),
      ),
    );
  }
}

class UsePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('使用页'),
      ),
      body: Center(
        child: Text('这是使用页'),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter中使用wave_bottom_bar插件来创建底部导航栏的示例代码。这个插件提供了一个具有波浪动画效果的底部导航栏,可以为你的应用增添一些视觉上的吸引力。

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

dependencies:
  flutter:
    sdk: flutter
  wave_bottom_bar: ^latest_version  # 请替换为实际的最新版本号

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

接下来,你可以在你的Flutter应用中这样使用wave_bottom_bar

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Wave Bottom Bar 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<WaveItem> _waveItems = [
    WaveItem(
      icon: Icons.home,
      title: 'Home',
      color: Colors.blue,
    ),
    WaveItem(
      icon: Icons.search,
      title: 'Search',
      color: Colors.green,
    ),
    WaveItem(
      icon: Icons.add,
      title: 'Add',
      color: Colors.amber,
    ),
    WaveItem(
      icon: Icons.account_circle,
      title: 'Profile',
      color: Colors.red,
    ),
  ];

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('You have selected: ${_waveItems[_selectedIndex].title}'),
      ),
      bottomNavigationBar: WaveBottomBar(
        currentIndex: _selectedIndex,
        onItemTap: _onItemTap,
        items: _waveItems,
        fixedColor: Colors.white,
        notchedShape: RoundedNotchedRectangle(),
        animationDuration: Duration(milliseconds: 500),
      ),
    );
  }
}

代码解释

  1. 依赖导入:首先,我们导入了flutter/material.dartwave_bottom_bar/wave_bottom_bar.dart

  2. 主应用MyApp类是我们的主应用类,它包含一个MaterialApp,设置了应用的主题和主页。

  3. 主页MyHomePage是一个有状态的组件,它管理底部导航栏的选中状态。

  4. WaveItem列表:我们定义了一个WaveItem列表,每个WaveItem包含图标、标题和颜色。

  5. 选中项处理_onItemTap方法用于处理底部导航栏项的点击事件,更新选中状态。

  6. 构建UI:在build方法中,我们返回一个Scaffold,其中包含一个居中的文本(显示当前选中的导航项标题),以及一个WaveBottomBar

  7. WaveBottomBar属性

    • currentIndex:当前选中的导航项索引。
    • onItemTap:点击事件处理函数。
    • itemsWaveItem列表。
    • fixedColor:选中项的颜色。
    • notchedShape:底部导航栏的形状(这里使用了RoundedNotchedRectangle)。
    • animationDuration:动画持续时间。

通过这段代码,你就可以在你的Flutter应用中实现一个具有波浪动画效果的底部导航栏了。希望这对你有帮助!

回到顶部