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

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

插件介绍

flutter-countdown 是一个简单的且易于使用的Flutter倒计时插件。 它可以帮助开发者在Flutter应用中实现倒计时功能。

countdown.gif

感谢 MohamedAbdallah-14 的迁移工作。

使用说明

这个项目是一个为Flutter开发的插件包的基础,它包含了针对Android和iOS平台的具体实现代码。

对于帮助您开始使用Flutter,请查看我们的在线文档,该文档提供了教程、示例、移动开发指导以及完整的API参考。

示例代码

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

class Foo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Countdown(
        duration: Duration(seconds: 1),
        onFinish: () {
          print('finished!');
        },
        builder: (BuildContext ctx, Duration remaining) {
            return Text('${remaining.inMinutes}:${remaining.inSeconds}');
        },
      ),
    );
  }
}

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

class Foo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: CountdownFormatted(
        duration: Duration(hours: 1),
        builder: (BuildContext ctx, String remaining) {
          return Text(remaining); // 0
        },
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 countdown_flutter_ns 插件在 Flutter 中实现倒计时功能的代码案例。

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

dependencies:
  flutter:
    sdk: flutter
  countdown_flutter_ns: ^最新版本号  # 请替换为最新版本号

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

接下来,你可以在你的 Flutter 应用中使用这个插件。以下是一个简单的示例,展示如何创建一个倒计时功能:

import 'package:flutter/material.dart';
import 'package:countdown_flutter_ns/countdown_flutter_ns.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: CountdownScreen(),
    );
  }
}

class CountdownScreen extends StatefulWidget {
  @override
  _CountdownScreenState createState() => _CountdownScreenState();
}

class _CountdownScreenState extends State<CountdownScreen> {
  CountdownController _countdownController;

  @override
  void initState() {
    super.initState();

    // 初始化倒计时控制器,设置倒计时的初始时间和结束时的回调
    _countdownController = CountdownController(
      endTime: DateTime.now().add(Duration(seconds: 10)), // 设置倒计时为10秒
      interval: Duration(seconds: 1), // 每秒更新一次
      onEnd: () {
        // 倒计时结束时的回调
        print("Countdown Ended!");
      },
    );

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Countdown Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Time Remaining: ${_formatDuration(_countdownController.remainingTime)}',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _countdownController.isActive
                  ? () {
                      // 暂停倒计时
                      _countdownController.pause();
                    }
                  : () {
                      // 如果倒计时未开始或已结束,则重新开始
                      if (!_countdownController.isActive) {
                        _countdownController.reset();
                        _countdownController.start();
                      }
                    },
              child: Text(_countdownController.isActive ? 'Pause' : 'Restart'),
            ),
          ],
        ),
      ),
    );
  }

  // 格式化时间剩余显示
  String _formatDuration(Duration duration) {
    String twoDigits(int n) => n.toString().padLeft(2, '0');
    return '${twoDigits(duration.inMinutes % 60)}:${twoDigits(duration.inSeconds % 60)}';
  }
}

代码解释:

  1. 依赖添加:确保在 pubspec.yaml 中添加了 countdown_flutter_ns 依赖。
  2. 初始化:在 initState 中初始化 CountdownController 并设置倒计时的初始时间和每秒更新一次的间隔。
  3. 开始倒计时:调用 _countdownController.start() 开始倒计时。
  4. UI 显示:使用 Text 小部件显示剩余时间,并通过 _formatDuration 方法将时间格式化为 MM:SS
  5. 控制按钮:添加一个按钮,用于在倒计时进行中暂停倒计时,或者在倒计时未开始或已结束时重新开始倒计时。
  6. 资源释放:在 dispose 方法中释放 CountdownController 的资源。

这个示例展示了如何使用 countdown_flutter_ns 插件在 Flutter 应用中实现一个简单的倒计时功能。你可以根据需要进行进一步自定义和扩展。

回到顶部