Flutter 定时器相关

在写JS时,大家都习惯了用setTimeout 和 setInterval 设置定时器。那么在Flutter中也有相关的。

  1. JavaScript setTimeout →\rightarrow → Dart Timer

Javascript

Javascrip 复制代码
setTimeout(() => { 
  console.log("两秒后执行"); 
}, 2000);

Flutter/Dart

Flutter/Dart 复制代码
import 'dart:async'; 
Timer(Duration(seconds: 2), () { 
    print("两秒后执行"); 
});

Flutter/Dart提供了delay的方法而Javascript需要结合Promise实现

Javascript 复制代码
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

await delay(2000);
print("在等待两秒后执行");
Flutter/Dart 复制代码
await Future.delayed(Duration(seconds: 2)); 
print("在等待两秒后执行");
  1. JavaScript setInterval →\rightarrow → Dart Timer.periodic 间隔多少时间来执行方法

Javascript

Javascript 复制代码
const intervalId = setInterval(() => { 
    console.log("每隔一秒执行"); 
}, 1000);

//停止执行的方法
clearInterval(intervalId);

Flutter/Dart

Flutter/Dart 复制代码
import 'dart:async'; 

Timer myTimer = Timer.periodic(Duration(seconds: 1), (timer) { 
    print("每隔一秒执行"); 
    //可以在一定的条件下取消执行
    if (someCondition) { 
        timer.cancel();
 }); 
 
 //停止执行的方法
 myTimer.cancel();

注:如果在Flutter statefullWidget中使用的时候 需要在dispose方法里面调用cancel的方法否者将会在后台一直执行

Flutter/Dart 复制代码
class MyTimerWidget extends StatefulWidget { 
    @override _MyTimerWidgetState createState() => _MyTimerWidgetState(); 
} 

class _MyTimerWidgetState extends State<MyTimerWidget> { 
    Timer? _timer; 
    @override 
    void initState() { 
        super.initState(); 
        // 在创建之后开始计时
        _timer = Timer.periodic(Duration(seconds: 1), (timer) { 
            setState(() { 
              // 通过setState更新UI 
            }); 
        }); 
    } 
    @override 
    void dispose() { 
        _timer?.cancel(); 
        // 在这里清楚timer定时器
        super.dispose(); 
    } 
    @override 
    Widget build(BuildContext context) { 
        return Text("Timer is running..."); 
    } 
  }
相关推荐
●VON5 小时前
Flutter 鸿蒙插件适配实战:用 device_screen_brightness 2.0.0 控制并监听屏幕亮度
flutter·华为·harmonyos
风早爽太14 小时前
Flutter 开发笔记:share_plus 分享插件
笔记·flutter
●VON14 小时前
Flutter 鸿蒙插件适配实战:用 boot_time_plugin 1.0.0 读取启动时间与运行时长
flutter·华为·harmonyos
不羁的木木16 小时前
给鸿蒙 App 增加唤起系统邮件发送能力 —— flutter_email_sender 的鸿蒙使用指南
flutter·华为·harmonyos
●VON17 小时前
Flutter 鸿蒙插件适配实战:用 accurate_storage_info 0.1.1 查询总量、可用量与已用量
flutter·华为·harmonyos
●VON18 小时前
Flutter 鸿蒙插件适配实战:用 network_status_bridge 0.0.5 查询并监听默认网络
网络·flutter·华为·harmonyos·鸿蒙
安好说AI19 小时前
Flutter for OpenHarmony 实战:媒体选择库 adaptive_image_picker 的鸿蒙化适配全解读
flutter·harmonyos·媒体
恋猫de小郭19 小时前
ADB Wi-Fi 2.0 ,Android 17 把无线调试的连接链路重新做了一遍
android·前端·flutter
●VON19 小时前
Flutter 鸿蒙插件适配实战:用 app_version_details 1.0.3 读取版本号与包名
flutter·华为·harmonyos
●VON1 天前
Flutter 鸿蒙插件适配实战:用 locale_plus 2.0.0 读取语言、地区与格式偏好
flutter·华为·harmonyos·鸿蒙