Flutter周期性任务执行插件gg_periodic_timer的使用

Flutter周期性任务执行插件gg_periodic_timer的使用

GgPeriodicTimer

一个可以启动、停止和重新启动的定时器。还可以添加多个监听器。

使用

import 'package:gg_periodic_timer/gg_periodic_timer.dart';

void main() async {
  // 创建一个需要手动触发的周期性定时器
  var timer = GgPeriodicTimer();

  // 添加一个监听器到定时器
  timer.addListener(() => print('Timer fired.'));

  // 启动定时器。否则监听器不会被触发。
  timer.start();

  // 调用fire来触发监听器。
  timer.fire(); // 输出: Timer fired.

  // 停止定时器。
  timer.stop();

  // 监听器将不会被通知
  timer.fire(); // 输出: Nothing

  // 重新启动定时器
  timer.start();

  // 监听器将再次被触发。
  timer.fire(); // 输出: Timer fired.

  // 创建一个自动调用的周期性定时器
  const oneFrame = Duration(milliseconds: 100);
  final autoTimer = GgAutoPeriodicTimer(interval: oneFrame);
  autoTimer.addListener(
    () => print('Auto timer fired.'),
  );

  // 启动定时器
  autoTimer.start();

  // 等待五个帧
  await Future<void>.delayed(oneFrame * 5);

  // 输出:
  //   Auto timer fired.
  //   Auto timer fired.
  //   Auto timer fired.
  //   Auto timer fired.
  //   Auto timer fired.
  //
  autoTimer.stop();
}

更多关于Flutter周期性任务执行插件gg_periodic_timer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter周期性任务执行插件gg_periodic_timer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter周期性任务执行插件 gg_periodic_timer 的代码示例。这个插件允许你在Flutter应用中定期执行任务。首先,你需要确保在 pubspec.yaml 文件中添加了这个依赖项:

dependencies:
  flutter:
    sdk: flutter
  gg_periodic_timer: ^latest_version  # 请替换为最新的版本号

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

以下是一个完整的示例,展示了如何使用 gg_periodic_timer 来定期执行任务:

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int counter = 0;
  GgPeriodicTimer? _periodicTimer;

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

    // 设置一个每秒执行一次的周期性任务
    _periodicTimer = GgPeriodicTimer.periodic(
      Duration(seconds: 1),
      (timer) {
        // 这里是周期性执行的代码
        setState(() {
          counter++;
        });
        print('Counter: $counter');
      },
    );
  }

  @override
  void dispose() {
    // 取消周期性任务
    _periodicTimer?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Periodic Timer Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Counter: $counter',
              style: TextStyle(fontSize: 24),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 可以在这里添加额外的按钮逻辑,比如停止和重新开始计时器
          setState(() {
            if (_periodicTimer!.isActive) {
              _periodicTimer!.cancel();
            } else {
              // 注意:这里重新创建了一个新的 PeriodicTimer 实例,
              // 因为一旦取消,原实例就不能再重新启动。
              // 实际应用中,你可能需要更复杂的逻辑来处理这种情况。
              _periodicTimer = GgPeriodicTimer.periodic(
                Duration(seconds: 1),
                (timer) {
                  setState(() {
                    counter++;
                  });
                  print('Counter: $counter');
                },
              );
            }
          });
        },
        tooltip: 'Toggle Timer',
        child: Icon(
          _periodicTimer!.isActive ? Icons.pause : Icons.play_arrow,
        ),
      ),
    );
  }
}

代码说明:

  1. 依赖添加:在 pubspec.yaml 中添加 gg_periodic_timer 依赖。
  2. 状态管理:在 MyHomePage 类中,我们使用 _MyHomePageState 来管理状态,包括 counter_periodicTimer
  3. 初始化周期性任务:在 initState 方法中,我们创建一个 GgPeriodicTimer 实例,设置其周期为1秒,并指定一个回调函数来更新 counter
  4. 取消周期性任务:在 dispose 方法中,我们取消周期性任务以避免内存泄漏。
  5. UI更新:在 build 方法中,我们构建一个简单的界面,显示当前的 counter 值,并提供一个浮动操作按钮来切换计时器的状态(这里简单地取消和重新创建计时器,实际应用中可能需要更复杂的逻辑)。

请注意,这个示例中的浮动按钮逻辑只是为了演示如何切换计时器状态,实际应用中你可能需要更精细的控制。

回到顶部