Flutter图标切换插件iconswitcher的使用

Flutter图标切换插件iconswitcher的使用

简介

IconSwitcher 是一个 Flutter 插件,它允许你在 AppBar 小部件上创建一个图标切换器。通过点击图标,可以触发动画并切换不同的视图或状态。

IconSwitcher 动画演示

参数说明

以下是 IconSwitcher 的主要参数及其描述:

参数名称 描述 默认值
width 最终小部件的宽度 required
height 最终小部件的高度 required
marginTop 最终小部件的顶部间距 required
icon1 第一个图标 required
icon2 第二个图标 required
color1 第一个图标的颜色 required
color2 第二个图标的颜色 required
duration 用户点击图标时的动画持续时间 required
firstIconSelectedColor 第一个选择器的颜色 Colors.redAccent
secondIconSelectedColor 第二个选择器的颜色 Colors.orangeAccent
curve 动画的曲线类型 Curves.bounceOut
onChange 函数 (bool):当第一个图标被选中时返回 true;否则返回 false

使用示例

以下是一个完整的示例代码,展示了如何在 Flutter 中使用 IconSwitcher 插件来切换不同的屏幕视图。

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

// 定义主屏幕类
class Screen extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() {
    return _Screen();
  }
}

// 定义主屏幕状态类
class _Screen extends State<Screen> with TickerProviderStateMixin {
  bool left = true; // 初始状态为左侧图标被选中
  Duration duration = Duration(milliseconds: 400); // 动画持续时间为 400 毫秒

  [@override](/user/override)
  Widget build(BuildContext context) {
    double marginTop = 1.5; // 图标顶部间距
    double height = kToolbarHeight - marginTop * 2; // 图标高度
    double width = height * 2; // 图标宽度

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(
          backgroundColor: Colors.white,
          title: Text("Title"),
          actions: [
            // 使用 IconSwitcher 插件
            IconSwitcher(
              width: width,
              height: height,
              marginTop: marginTop,
              duration: duration,
              icon1: Icons.satellite, // 第一个图标
              icon2: Icons.content_copy, // 第二个图标
              color1: Colors.purple, // 第一个图标的颜色
              color2: Colors.white, // 第二个图标的颜色
              backgroundColor: Colors.black, // 背景颜色
              firstIconSelectedColor: Colors.redAccent, // 第一个选择器的颜色
              secondIconSelectedColor: Colors.orangeAccent, // 第二个选择器的颜色
              onChange: (bool result) { // 状态变化回调
                setState(() {
                  left = result; // 更新状态
                });
              },
            )
          ],
        ),
        body: AnimatedCrossFade( // 动画切换容器
          firstChild: Container(
            color: Colors.black54, // 左侧视图颜色
          ),
          secondChild: Container(
            color: Colors.orange, // 右侧视图颜色
          ),
          duration: duration, // 动画持续时间
          crossFadeState: left ? CrossFadeState.showFirst : CrossFadeState.showSecond, // 当前视图状态
          firstCurve: Curves.bounceOut, // 第一个视图的动画曲线
          secondCurve: Curves.bounceOut, // 第二个视图的动画曲线
        ),
      ),
    );
  }
}

更多关于Flutter图标切换插件iconswitcher的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图标切换插件iconswitcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


IconSwitcher 是一个用于在 Flutter 应用中切换图标的插件。它允许你在不同的图标之间进行切换,通常用于表示状态的改变,比如喜欢/不喜欢、开/关等。

安装

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

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

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

基本用法

IconSwitcher 的基本用法非常简单。你可以通过传递不同的图标和状态来控制图标的切换。

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

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

class _MyHomePageState extends State<MyHomePage> {
  bool _isLiked = false;

  void _toggleLike() {
    setState(() {
      _isLiked = !_isLiked;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('IconSwitcher Example'),
      ),
      body: Center(
        child: IconSwitcher(
          isActive: _isLiked,
          activeIcon: Icons.favorite,
          inactiveIcon: Icons.favorite_border,
          onPressed: _toggleLike,
        ),
      ),
    );
  }
}

参数说明

  • isActive: 一个布尔值,表示当前图标的状态。如果为 true,则显示 activeIcon,否则显示 inactiveIcon
  • activeIcon: 当 isActivetrue 时显示的图标。
  • inactiveIcon: 当 isActivefalse 时显示的图标。
  • onPressed: 当用户点击图标时触发的回调函数。

自定义样式

你还可以通过传递其他参数来自定义 IconSwitcher 的样式,比如图标的大小、颜色等。

IconSwitcher(
  isActive: _isLiked,
  activeIcon: Icons.favorite,
  inactiveIcon: Icons.favorite_border,
  onPressed: _toggleLike,
  iconSize: 40.0,
  activeColor: Colors.red,
  inactiveColor: Colors.grey,
)
回到顶部