在我的Widget构建完成后,我想在一段延迟后执行一个函数.在Flutter中这样做的惯用方法是什么?
我想要实现的目标:我想从默认的FlutterLogoWidget 开始,然后style在一段时间后更改其属性.
jai*_*yta 76
倒计时后触发动作
Timer(Duration(seconds: 3), () {
print("Yeah, this line is printed after 3 seconds");
});
Run Code Online (Sandbox Code Playgroud)
重复动作
Timer.periodic(Duration(seconds: 5), (timer) {
print(DateTime.now());
});
Run Code Online (Sandbox Code Playgroud)
立即触发定时器
Timer(Duration(seconds: 0), () {
print("Yeah, this line is printed immediately");
});
Run Code Online (Sandbox Code Playgroud)
Rah*_*rma 74
您可以使用Future.delayed一段时间后运行代码.例如:
Future.delayed(const Duration(milliseconds: 500), () {
// Here you can write your code
setState(() {
// Here you can write your code for open new view
});
});
Run Code Online (Sandbox Code Playgroud)
在setState函数中,您可以编写与应用程序UI相关的代码,例如刷新屏幕数据,更改标签文本等.
Arm*_* L. 44
只是离开这里每个人都在寻找的片段:
Future.delayed(Duration(milliseconds: 100), () {
// Do something
});
Run Code Online (Sandbox Code Playgroud)
Bra*_*ell 41
弄清楚了
class AnimatedFlutterLogo extends StatefulWidget {
@override
State<StatefulWidget> createState() => new _AnimatedFlutterLogoState();
}
class _AnimatedFlutterLogoState extends State<AnimatedFlutterLogo> {
Timer _timer;
FlutterLogoStyle _logoStyle = FlutterLogoStyle.markOnly;
_AnimatedFlutterLogoState() {
_timer = new Timer(const Duration(milliseconds: 400), () {
setState(() {
_logoStyle = FlutterLogoStyle.horizontal;
});
});
}
@override
void dispose() {
super.dispose();
_timer.cancel();
}
@override
Widget build(BuildContext context) {
return new FlutterLogo(
size: 200.0,
textColor: Palette.white,
style: _logoStyle,
);
}
}
Run Code Online (Sandbox Code Playgroud)
Moh*_*adi 32
Synchronously
Future.delayed(Duration(milliseconds: 1000), () {
// Your code
});
Run Code Online (Sandbox Code Playgroud)
Asynchronously
await Future.delayed(const Duration(milliseconds: 1000));
Run Code Online (Sandbox Code Playgroud)
Par*_*iya 16
您可以通过两种方式来做到这一点 1 是Future.delayed和 2 是Timer
使用定时器
Timer 是一个表示倒数计时器的类,该计时器配置为在到达时间结束时触发操作,并且可以触发一次或重复触发。
确保将dart:async 包导入 到要使用的程序的开头 Timer
Timer(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});
Run Code Online (Sandbox Code Playgroud)
使用 Future.delayed
Future.delayed is 创建了一个在延迟后运行其计算的未来。
确保 import "dart:async"; 打包到要使用的程序的开始 Future.delayed
Future.delayed(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});
Run Code Online (Sandbox Code Playgroud)
Ovi*_*uru 13
(添加对旧 q 的响应,因为这是 google 上的最佳结果)
我尝试在块内的回调中产生一个新状态,但没有奏效。尝试使用 Timer 和 Future.delayed。
然而,起作用的是......
await Future.delayed(const Duration(milliseconds: 500));
yield newState;
Run Code Online (Sandbox Code Playgroud)
等待一个空的未来,然后运行该功能。
Fax*_*yev 13
一种快速的方法是使用Future.delayed如下:
Future.delayed(Duration(seconds: 10), (){
print("Wait for 10 seconds");
});
Run Code Online (Sandbox Code Playgroud)
或者您可以将持续时间更改为milliseconds这样:
Future.delayed(Duration(milliseconds: 3000), () {
print("Wait for 3000 milliseconds");
});
Run Code Online (Sandbox Code Playgroud)
jit*_*555 10
只需在上述答案上添加更多描述
计时器功能也适用于以下持续时间:
const Duration(
{int days = 0,
int hours = 0,
int minutes = 0,
int seconds = 0,
int milliseconds = 0,
int microseconds = 0})
Run Code Online (Sandbox Code Playgroud)
例子:
Timer(Duration(seconds: 3), () {
print("print after every 3 seconds");
});
Run Code Online (Sandbox Code Playgroud)
小智 6
import 'dart:async';
Timer timer;
void autoPress(){
timer = new Timer(const Duration(seconds:2),(){
print("This line will print after two seconds");
});
}
autoPress();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29603 次 |
| 最近记录: |