Flutter动画计时器图标插件flutter_animated_timer_icon的使用

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

Flutter 动画计时器图标插件 flutter_animated_timer_icon 的使用

插件简介

这是一个小部件,可以作为图标来表示剩余时间。它可以作为一个文本字段的后缀或更大的图标使用。

使用方法

要使用 Animated Timer Icon,首先需要将其导入到你的小部件文件中:

import 'package:flutter_animated_timer_icon/flutter_animated_timer_icon.dart';

一旦导入完成,你可以在代码中这样使用它:

final animateTimerController = AnimateTimerController();

AnimateTimer(
  animateTimerController: animateTimerController,
  size: 200,
  color: Colors.blue,
  animationDuration: 10,
  animationBehaviorPreserve: true,
)

你可以通过控制器来控制动画:

onPressed: () {
  animateTimerController.restart();
}
onPressed: () {
  animateTimerController.start();
}
onPressed: () {
  animateTimerController.stop();
}

完整示例代码

以下是完整的示例代码,展示了如何在应用中使用 Animated Timer Icon

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

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final animateTimerController = AnimateTimerController();
  final animateTimerController2 = AnimateTimerController();
  TextEditingController textEditingController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Material App Bar'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Center(
            child: SizedBox(
              width: 200,
              child: Column(
                children: [
                  TextField(
                    controller: textEditingController..text = ' ',
                    decoration: InputDecoration(
                      labelText: 'Enter the code',
                      suffix: AnimateTimer(
                        animateTimerController: animateTimerController,
                        size: 22,
                        color: Colors.blue,
                        animationDuration: 10,
                        animationBehaviorPreserve: true,
                      ),
                    ),
                  ),
                  const SizedBox(
                    height: 20,
                  ),
                  TextButton(
                      onPressed: () {
                        textEditingController.text = ' ';
                        animateTimerController.restart();
                      },
                      child: const Text('Submit')),
                  const SizedBox(
                    height: 50,
                  ),
                  Center(
                    child: AnimateTimer(
                      animateTimerController: animateTimerController2,
                      size: 200,
                      color: Colors.blue,
                      animationDuration: 10,
                      animationBehaviorPreserve: true,
                    ),
                  ),
                  const SizedBox(
                    height: 50,
                  ),
                  Row(
                    children: [
                      TextButton(
                          onPressed: () {
                            animateTimerController2.restart();
                          },
                          child: const Text('Restart')),
                      TextButton(
                          onPressed: () {
                            animateTimerController2.start();
                          },
                          child: const Text('Start')),
                      TextButton(
                          onPressed: () {
                            animateTimerController2.stop();
                          },
                          child: const Text('Stop')),
                    ],
                  )
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter动画计时器图标插件flutter_animated_timer_icon的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter动画计时器图标插件flutter_animated_timer_icon的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然!flutter_animated_timer_icon 是一个用于在 Flutter 应用中创建动画计时器图标的插件。以下是一个简单的代码示例,展示了如何使用 flutter_animated_timer_icon 插件来创建一个基本的计时器动画。

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

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

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中使用 FlutterAnimatedTimerIcon。以下是一个完整的代码示例:

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

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

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

class TimerIconScreen extends StatefulWidget {
  @override
  _TimerIconScreenState createState() => _TimerIconScreenState();
}

class _TimerIconScreenState extends State<TimerIconScreen> with SingleTickerProviderStateMixin {
  late AnimationController _controller;
  late Animation<double> _animation;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: const Duration(seconds: 10),
      vsync: this,
    )..repeat(reverse: true);

    _animation = IntTween(
      begin: 0,
      end: 100,
    ).animate(
      CurvedAnimation(
        parent: _controller,
        curve: Curves.linear,
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Timer Icon Demo'),
      ),
      body: Center(
        child: FlutterAnimatedTimerIcon(
          controller: _controller,
          icon: Icons.timer,
          iconColor: Colors.blue,
          backgroundColor: Colors.grey.withOpacity(0.3),
          size: 100.0,
          duration: _animation.value.toDouble(),
          textStyle: TextStyle(
            fontSize: 24.0,
            color: Colors.white,
          ),
          textBuilder: (context, duration) {
            return Text('${duration.toInt()}s');
          },
        ),
      ),
    );
  }
}

代码解释

  1. 依赖导入

    • 导入 flutter_animated_timer_icon 包。
  2. 主应用

    • MyApp 类是一个基本的 Flutter 应用,它包含一个 MaterialApp 和一个 TimerIconScreen 页面。
  3. 计时器页面

    • TimerIconScreen 是一个有状态的 widget,它包含了一个 AnimationController 和一个 Animation<double>
    • initState 方法中初始化了 AnimationControllerAnimationAnimationController 的持续时间为 10 秒,并且会不断地重复(..repeat(reverse: true))。
  4. FlutterAnimatedTimerIcon

    • FlutterAnimatedTimerIcon 组件使用了 AnimationControllerAnimation 来控制动画。
    • icon 属性指定了图标(这里使用的是 Icons.timer)。
    • iconColorbackgroundColor 设置了图标和背景的颜色。
    • size 设置了图标的大小。
    • duration 设置了计时器的持续时间,这里使用了 _animation.value.toDouble() 来动态更新。
    • textStyletextBuilder 用于自定义显示时间的样式和内容。

这个示例展示了如何使用 flutter_animated_timer_icon 插件创建一个简单的计时器动画图标。你可以根据需要进一步自定义和扩展这个示例。

回到顶部