Flutter倒计时功能插件flutter_countdown_timer的使用

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

Flutter倒计时功能插件flutter_countdown_timer的使用

简介

flutter_countdown_timer是一个简单的Flutter倒计时小部件,通过结束时间戳进行倒计时,并在倒计时结束后触发事件。

安装步骤

添加依赖

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

dependencies:
  flutter_countdown_timer: ^4.1.0

获取包

然后运行以下命令安装包:

$ flutter pub get

属性说明

CountdownTimer属性

名称 描述
endWidget 倒计时结束时显示的小部件
widgetBuilder 自定义倒计时期间显示的小部件构建器
controller 控制倒计时开始和释放的控制器
endTime 倒计时结束的时间戳(毫秒)
onEnd 倒计时结束时触发的事件
textStyle 文本样式

CountdownTimerController属性

名称 描述
endTime 倒计时结束的时间戳(毫秒)
onEnd 倒计时结束时触发的事件

示例代码

简单示例

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30; // 设置倒计时时间为30秒

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Countdown Timer Example')),
        body: Center(
          child: CountdownTimer(
            endTime: endTime,
          ),
        ),
      ),
    );
  }
}

结束时执行事件

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

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

class MyApp extends StatelessWidget {
  void onEnd() {
    print('Countdown ended!');
  }

  @override
  Widget build(BuildContext context) {
    int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Countdown Timer with Event')),
        body: Center(
          child: CountdownTimer(
            endTime: endTime,
            onEnd: onEnd,
          ),
        ),
      ),
    );
  }
}

使用控制器提前结束倒计时

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

class CountdownTimerPage extends StatefulWidget {
  @override
  _CountdownTimerPageState createState() => _CountdownTimerPageState();
}

class _CountdownTimerPageState extends State<CountdownTimerPage> {
  CountdownTimerController controller;
  int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;

  @override
  void initState() {
    super.initState();
    controller = CountdownTimerController(endTime: endTime, onEnd: onEnd);
  }

  void onEnd() {
    print('Countdown ended!');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Controlled Countdown Timer')),
      body: Center(
        child: CountdownTimer(
          controller: controller,
          onEnd: onEnd,
          endTime: endTime,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.stop),
        onPressed: () {
          onEnd();
          controller.disposeTimer();
        },
      ),
    );
  }

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

自定义样式

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Custom Styled Countdown Timer')),
        body: Center(
          child: CountdownTimer(
            endTime: endTime,
            widgetBuilder: (_, CurrentRemainingTime time) {
              if (time == null) {
                return Text('Game over');
              }
              return Text(
                  'days: [ ${time.days} ], hours: [ ${time.hours} ], min: [ ${time.min} ], sec: [ ${time.sec} ]');
            },
          ),
        ),
      ),
    );
  }
}

以上是关于flutter_countdown_timer插件的基本使用方法和一些示例代码。希望对你有所帮助!


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

1 回复

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


当然,以下是一个使用 flutter_countdown_timer 插件在 Flutter 中实现倒计时功能的示例代码。这个插件允许你创建一个简单的倒计时计时器,并在计时器结束时执行回调。

首先,确保在你的 pubspec.yaml 文件中添加 flutter_countdown_timer 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_countdown_timer: ^4.0.1  # 请确保使用最新版本

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

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

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

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

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

class CountdownTimerScreen extends StatefulWidget {
  @override
  _CountdownTimerScreenState createState() => _CountdownTimerScreenState();
}

class _CountdownTimerScreenState extends State<CountdownTimerScreen> {
  CountdownController _controller;

  @override
  void initState() {
    super.initState();
    // 初始化倒计时控制器,设置时间为60秒
    _controller = CountdownController(
      duration: 60,
      interval: 1,
    );

    // 当倒计时结束时,执行回调
    _controller.completionCallback = () {
      print("倒计时结束!");
      // 这里可以添加更多逻辑,比如显示一个对话框
      showDialog(
        context: context,
        builder: (context) => AlertDialog(
          title: Text('倒计时结束'),
          content: Text('时间到了!'),
          actions: <Widget>[
            FlatButton(
              child: Text('确定'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        ),
      );
    };

    // 监听倒计时变化
    _controller.listen((remainingTime) {
      print("剩余时间: ${remainingTime.remainingSeconds} 秒");
    });

    // 开始倒计时
    _controller.start();
  }

  @override
  void dispose() {
    // 释放资源
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Countdown Timer'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '剩余时间: ${_controller.remainingTime?.inSeconds ?? 0} 秒',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                if (_controller.isActive) {
                  _controller.reset();
                } else {
                  _controller.start();
                }
              },
              child: Text(_controller.isActive ? '重置' : '开始'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个 CountdownController 对象来管理倒计时。我们设置了倒计时的初始时间为60秒,并指定了每秒更新一次。当倒计时结束时,会执行一个回调,这里简单地打印了一个消息并显示了一个对话框。

我们还在 initState 方法中添加了一个监听器来监听倒计时的变化,并在控制台中打印剩余时间。在 build 方法中,我们显示了一个文本和一个按钮。如果倒计时正在进行,按钮会显示“重置”,否则显示“开始”。点击按钮可以启动或重置倒计时。

确保你理解这个示例,并根据你的具体需求进行调整。

回到顶部