Flutter动画切换插件animated_switch的使用

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

Flutter动画切换插件animated_switch的使用

Animated switch

描述

animated_switch 是一个可自定义的动画开关组件,适用于Flutter应用。它允许你自定义颜色、图标以及开/关状态下的文本。你可以像管理Material设计中的经典开关一样管理这个组件的状态。

style: lint License Pub Version

快速开始

导入库

在你的项目的pubspec.yaml文件中添加以下依赖:

dependencies:
  animated_switch: ^latest_version

或者直接通过命令行安装:

$ flutter pub add animated_switch

基本实现

使用回调函数

最简单的使用方式是监听开关状态的变化,并执行相应的操作:

AnimatedSwitch(
  onChanged: (bool state) {
    print('turned ${(state) ? 'on' : 'off'}');
  },
),

更多可能性

修改颜色

可以轻松地改变开关的颜色:

AnimatedSwitch(    
  colorOn: Colors.blue,
  colorOff: Colors.grey,
  indicatorColor: Colors.limeAccent,
)

修改图标

可以通过设置不同的图标来丰富用户体验:

AnimatedSwitch(
  iconOff: Icons.lock_open,
  iconOn: Icons.lock,
)

创建自定义文本指示器

为开关添加自定义文本和样式:

AnimatedSwitch(    
  textOn: "On",
  textOff: "Off",
  textStyle: TextStyle(color: Colors.white, fontSize: 20),
)

示例代码

下面是一个完整的示例程序,展示了如何在一个简单的Flutter应用程序中使用animated_switch插件的各种功能:

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Animated Switch Demo Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

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

  void onChange() {
    setState(() {
      _value = !_value;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextButton(
              onPressed: () {
                onChange();
              },
              child: const Text("ON CHANGE"),
            ),
            const Text("Simple:"),
            const SizedBox(height: 10),
            // Simple animated Switch
            const AnimatedSwitch(),
            const SizedBox(height: 30),
            const Text("Custom colors:"),
            const SizedBox(height: 10),
            // With custom colors
            const AnimatedSwitch(
              colorOn: Colors.blue,
              colorOff: Colors.grey,
              indicatorColor: Colors.limeAccent,
            ),
            const SizedBox(height: 20),
            Text("Status: ${_value ? "On" : "Off"}"),
            const SizedBox(height: 10),
            // with callback action
            AnimatedSwitch(
              value: _value,
              onChanged: (value) {
                setState(() {
                  _value = value;
                });
              },
            ),
            const SizedBox(height: 30),
            const Text("Custom Icons:"),
            const SizedBox(height: 10),
            // Custom icons
            const AnimatedSwitch(
              iconOff: Icons.lock_open,
              iconOn: Icons.lock,
            ),
            const SizedBox(height: 30),
            const Text("Custom Texts:"),
            const SizedBox(height: 10),
            // Custom texts and style
            const AnimatedSwitch(
              textOn: "On",
              textOff: "Off",
              textStyle: TextStyle(color: Colors.white, fontSize: 20),
            )
          ],
        ),
      ),
    );
  }
}

此示例创建了一个包含不同配置的AnimatedSwitch的小型应用,包括默认样式、自定义颜色、图标和文本。你可以根据需要调整这些属性以适应自己的项目需求。


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

1 回复

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


当然,下面是一个关于如何在Flutter中使用animated_switch插件来实现动画切换效果的代码示例。animated_switch是一个可以帮助你在Flutter中实现带有动画效果的Switch组件的第三方库。

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

dependencies:
  flutter:
    sdk: flutter
  animated_switch: ^x.y.z  # 请将x.y.z替换为当前最新版本号

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

接下来是一个完整的Flutter应用程序示例,展示了如何使用AnimatedSwitch

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

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

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

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

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

  void handleSwitchChange(bool newValue) {
    setState(() {
      isSwitchOn = newValue;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Switch Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedSwitch(
              value: isSwitchOn,
              onChanged: handleSwitchChange,
              activeColor: Colors.green,
              inactiveColor: Colors.grey,
              activeThumbColor: Colors.white,
              inactiveThumbColor: Colors.black,
              switchAnimationDuration: const Duration(milliseconds: 300),
              thumbAnimationDuration: const Duration(milliseconds: 200),
            ),
            SizedBox(height: 20),
            Text(
              'Switch is ${isSwitchOn ? 'ON' : 'OFF'}',
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们首先引入了animated_switch包。
  2. 创建了一个MyApp应用程序,其中包含一个MyHomePage页面。
  3. MyHomePage中,我们定义了一个isSwitchOn状态变量来跟踪开关的状态。
  4. 使用AnimatedSwitch组件来显示开关,并配置了一些动画参数(如switchAnimationDurationthumbAnimationDuration)以及颜色参数(如activeColorinactiveColor)。
  5. 当开关的状态改变时,handleSwitchChange方法会被调用,并更新isSwitchOn状态。

这样,你就可以在Flutter应用程序中使用带有动画效果的开关组件了。希望这个示例对你有所帮助!

回到顶部