Flutter倒计时插件simple_timer_count_down的使用

Flutter倒计时插件simple_timer_count_down的使用

SimpleTimerCountDown 是一个用于Flutter应用的可定制倒计时插件。它允许你轻松实现倒计时功能,并支持灵活的时间间隔、回调函数和自定义UI渲染。

特性

  • 可定制的持续时间和间隔:指定总的倒计时时间和更新间隔。
  • 回调函数
    • onStarted: 当倒计时开始时触发。
    • onFinished: 当倒计时结束时触发。
    • onChange: 提供每个间隔剩余的时间。
  • 自定义UI渲染:使用builder函数根据剩余时间创建动态UI。
  • 生命周期管理:当小部件被销毁时自动清理定时器。

安装

在你的 pubspec.yaml 文件中添加以下内容:

dependencies:
  count_down_timer: ^<latest_version>

然后运行以下命令:

flutter pub get

请确保将 <latest_version> 替换为最新的版本号。

使用方法

以下是一个基本的示例,展示如何使用 SimpleTimerCountDown

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('SimpleTimerCountDown Example')),
        body: Center(
          child: SimpleTimerCountDown(
            duration: Duration(seconds: 10),
            onStarted: () => print('Timer started!'),
            onFinished: () => print('Timer finished!'),
            onChange: (time) => print('Time remaining: $time'),
            builder: (context, remainingTime) {
              return Text(
                remainingTime.inSeconds.toString(),
                style: TextStyle(fontSize: 48),
              );
            },
          ),
        ),
      ),
    );
  }
}

属性说明

属性 类型 描述
duration Duration 总的倒计时时间(必填)。
interval Duration 更新的时间间隔,默认是1秒。
onStarted VoidCallback? 倒计时开始时的回调。
onFinished VoidCallback? 倒计时结束时的回调。
onChange void Function(Duration)? 提供剩余时间的回调。
builder Widget Function(BuildContext, Duration)? 根据剩余时间创建自定义UI的函数。

示例UI

你可以使用 builder 属性来创建动态UI:

builder: (context, remainingTime) {
  return Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Text('Time Remaining:', style: TextStyle(fontSize: 20)),
      Text(
        '${remainingTime.inSeconds}s',
        style: TextStyle(fontSize: 48, fontWeight: FontWeight.bold),
      ),
    ],
  );
},

完整示例代码

下面是一个更完整的示例,展示了如何在实际项目中使用 SimpleTimerCountDown

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Simple Timer Countdown Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const HomePage(),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Simple Timer Countdown Example')),
      body: Center(
        child: SimpleTimerCountDown(
          duration: const Duration(seconds: 10), // 设置倒计时总时间
          interval: const Duration(seconds: 1), // 设置更新间隔
          onStarted: () => print('Timer started!'), // 倒计时开始时的回调
          onFinished: () => print('Timer finished!'), // 倒计时结束时的回调
          onChange: (time) => print('Time remaining: $time'), // 每个间隔的回调
          builder: (context, time) {
            // 根据倒计时的当前状态自定义UI
            return Text(
              '${time.inSeconds} seconds remaining',
              style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
            );
          },
        ),
      ),
    );
  }
}

更多关于Flutter倒计时插件simple_timer_count_down的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是如何在Flutter项目中使用simple_timer_count_down插件的一个代码示例。这个插件可以帮助你实现一个简单的倒计时功能。

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

dependencies:
  flutter:
    sdk: flutter
  simple_timer_count_down: ^最新版本号  # 替换为最新的版本号

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

接下来,你可以在你的Flutter项目中使用SimpleTimerCountDown组件。以下是一个完整的示例代码:

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

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

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

class CountdownDemo extends StatefulWidget {
  @override
  _CountdownDemoState createState() => _CountdownDemoState();
}

class _CountdownDemoState extends State<CountdownDemo> {
  SimpleTimerCountDownController _controller;
  String _timeLeft = "00:00:00";

  @override
  void initState() {
    super.initState();
    _controller = SimpleTimerCountDownController(
      duration: 60, // 设置倒计时时间,单位为秒
      onTick: (remainingTime) {
        setState(() {
          _timeLeft = formatDuration(remainingTime);
        });
      },
      onComplete: () {
        setState(() {
          _timeLeft = "00:00:00";
        });
        print("Countdown complete!");
      },
    );
  }

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

  String formatDuration(int seconds) {
    int hours = seconds ~/ 3600;
    int minutes = (seconds % 3600) ~/ 60;
    int secs = seconds % 60;
    return "${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}:${secs.toString().padLeft(2, '0')}";
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Countdown Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              _timeLeft,
              style: TextStyle(fontSize: 48),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _controller.reset();
                  _controller.start();
                });
              },
              child: Text('Start/Reset'),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 依赖导入:确保在pubspec.yaml文件中添加了simple_timer_count_down依赖。
  2. 创建控制器:在initState方法中,创建了一个SimpleTimerCountDownController实例,并设置了倒计时的初始时间(单位为秒),以及onTickonComplete回调。
  3. 格式化时间formatDuration函数用于将秒数格式化为HH:MM:SS格式。
  4. UI布局:使用ScaffoldCenterColumnText等组件来构建用户界面。
  5. 按钮操作:一个ElevatedButton用于启动或重置倒计时。

你可以根据需要调整倒计时的时间和UI布局。希望这个示例对你有帮助!

回到顶部