Flutter动画按钮插件sweep_animation_button的使用

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

Flutter动画按钮插件sweep_animation_button的使用

在您的Flutter项目中使用sweep_animation_button插件可以创建一个具有动画效果的按钮。以下是详细的使用说明和示例代码。

安装插件

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

dependencies:
  ...
  sweep_animation_button: ^0.0.3

然后运行flutter pub get以安装该插件。

导入插件

在需要使用该插件的Dart文件中导入:

import 'package:sweep_animation_button/sweep_animation_button.dart';

使用示例

示例 1

SweepAnimationButton(
    width: 250,
    height: 50,
    animationProgressColor: Colors.green[800],
    borderRadius: 50,
    animationColor: Colors.lightGreen,
    backroundColor: Colors.lightGreen[200],
    durationCircle: 5,
    hideIcon: true,
    child: Text(
      "Sweeped Button",
      style: TextStyle(
        fontSize: 15,
        color: Colors.green[600],
        fontWeight: FontWeight.w600,
        letterSpacing: 1,
      ),
    ),
    onTap: () {
      showDialog(
        context: context,
        builder: (context) => Dialog(
          shape: const CircleBorder(),
          elevation: 0.4,
          child: Container(
            width: 70,
            height: 70,
            decoration: BoxDecoration(
              color: Colors.lightGreen[300],
              shape: BoxShape.circle,
            ),
            child: Center(
              child: Icon(
                Icons.done,
                size: 24,
                color: Colors.lightGreen[700],
              ),
            ),
          ),
        ),
      );
    },
),

Exemple_1

示例 2

SweepAnimationButton(
    width: 250,
    height: 50,
    animationProgressColor: Colors.deepPurple[100],
    borderRadius: 0,
    animationColor: Colors.deepPurple,
    backroundColor: Colors.deepPurple[200],
    durationCircle: 5,
    hideIcon: true,
    child: Text(
      "Sweeped Button",
      style: TextStyle(
        fontSize: 15,
        color: Colors.deepPurple[700],
        fontWeight: FontWeight.w600,
        letterSpacing: 1,
      ),
    ),
    onTap: () {
      setState(() => isChanged = !isChanged);
      setState(() => visibility = false);
    },
  ),

Exemple_2

属性说明

属性 描述
Size 设置按钮的高度和宽度。
Child 自由设置按钮内部的文本或图标。
Fade icon 控制是否启用图标动画淡入淡出。
onTap 按钮点击后的回调函数。
Duration 设置进度条的持续时间。
BorderRadius 控制按钮的圆角半径。
Color 设置按钮的背景颜色和动画颜色。

完整示例代码

以下是一个完整的示例代码,展示了如何在应用中使用sweep_animation_button插件。

// ignore_for_file: avoid_print
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:sweep_animation_button/sweep_animation_button.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
    return const MaterialApp(
        debugShowCheckedModeBanner: false, home: MyHomePage());
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool isChanged = true;
  Color kbackroundColor = Colors.deepPurple.shade100;
  Color kbackroundColorOne = Colors.deepPurple;
  bool visibility = true;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: isChanged ? kbackroundColor : kbackroundColorOne,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              isChanged ? "Exemple 2" : "excellent",
              style: TextStyle(
                color: isChanged ? kbackroundColorOne : kbackroundColor,
                fontSize: 35,
                fontWeight: FontWeight.w600,
                letterSpacing: 1,
              ),
            ),
            SizedBox(height: isChanged ? 25 : 0),
            Visibility(
              visible: visibility,
              child: SweepAnimationButton(
                width: 250,
                height: 50,
                animationProgressColor: Colors.deepPurple[100],
                borderRadius: 0,
                animationColor: Colors.deepPurple,
                backroundColor: Colors.deepPurple[200],
                durationCircle: 5,
                hideIcon: true,
                child: Text(
                  "Sweeped Button",
                  style: TextStyle(
                    fontSize: 15,
                    color: Colors.deepPurple[700],
                    fontWeight: FontWeight.w600,
                    letterSpacing: 1,
                  ),
                ),
                onTap: () {
                  setState(() => isChanged = !isChanged);
                  setState(() => visibility = false);
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter中使用sweep_animation_button插件的一个代码示例。这个插件允许你创建一个带有动画效果的按钮,当用户点击或悬停时,按钮会展示一个动画效果。

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

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

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

接下来,在你的Flutter项目中,你可以按照以下方式使用这个插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sweep Animation Button Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sweep Animation Button Demo'),
        ),
        body: Center(
          child: SweepAnimationButtonExample(),
        ),
      ),
    );
  }
}

class SweepAnimationButtonExample extends StatefulWidget {
  @override
  _SweepAnimationButtonExampleState createState() => _SweepAnimationButtonExampleState();
}

class _SweepAnimationButtonExampleState extends State<SweepAnimationButtonExample> {
  bool isPressed = false;

  void handleButtonClick() {
    setState(() {
      isPressed = !isPressed;
      // 模拟一些延迟操作,比如网络请求等
      Future.delayed(Duration(seconds: 1), () {
        setState(() {
          isPressed = false;
        });
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return SweepAnimationButton(
      onPressed: handleButtonClick,
      child: Text(
        isPressed ? 'Loading...' : 'Click Me',
        style: TextStyle(color: Colors.white, fontSize: 20),
      ),
      buttonColor: Colors.blue,
      buttonPressedColor: Colors.blue.withOpacity(0.7),
      shadowColor: Colors.grey.withOpacity(0.5),
      elevation: 10,
      borderRadius: 25,
      animationDuration: 500, // 动画持续时间(毫秒)
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个使用sweep_animation_button插件的按钮。当用户点击按钮时,按钮会显示一个加载动画(在这个例子中,只是简单地改变了按钮的文本为"Loading…"),并在1秒后恢复。

  • SweepAnimationButtononPressed属性接受一个点击处理函数。
  • child属性定义了按钮的文本或子控件。
  • buttonColorbuttonPressedColor分别定义了按钮的默认颜色和按下时的颜色。
  • shadowColor定义了按钮的阴影颜色。
  • elevation定义了按钮的阴影大小。
  • borderRadius定义了按钮的圆角半径。
  • animationDuration定义了动画的持续时间(以毫秒为单位)。

你可以根据需要调整这些属性来实现你想要的动画效果。

回到顶部