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..."); 
    } 
  }
相关推荐
程序员老刘3 小时前
你的Flutter项目要不要紧急升级3.47.8?
flutter·客户端
Talyra425 小时前
不想开会员,我写了一个记账 App
flutter
2601_949575869 小时前
JSON5 跨端三方库仓颉适配全流程
前端·javascript·flutter
法的空间10 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
恋猫de小郭12 小时前
Flutter 紧急发布 3.47.8 安全升级版本,建议都升级
android·前端·flutter
好的佩奇1 天前
Dart 之模式
android·flutter·dart
淡淡的香烟1 天前
Flutter实现多语言切换
android·flutter·1024程序员节
事圆则缓1 天前
从零搭建一套 Flutter 架构:先跑通数据流
flutter
程序员老刘2 天前
Flutter版本选择指南:3.44稳定了11周正式转正 | 2026年10月
flutter·ai编程·客户端
chicken_h2 天前
【无标题】
flutter·打包