如果在 Futter 中 x 秒后 showDialog 没有响应,调用函数的最佳方法是什么
What is best way to call a function if there no response from showDialog after x seconds in Futter
我对 flutter 有点陌生。我进行了搜索但找不到合适的答案...如果用户在 x 秒后未响应 showDialog 警报,调用函数的最佳方式是什么?如果用户按下按钮,那么我不想执行该功能。
为此,您将使用计时器小部件。
计时器示例:
Timer _timer = Timer(
const Duration(milliseconds: 500),
() {
// Call some function after delay of 500ms
},
);
要取消定时器,使用_timer.cancel();
所以,很可能在 initState 方法中你会想要设置定时器对象,然后当用户按下按钮时,你可以取消这个定时器,这意味着它的回调不会 运行您指定的延迟。
您可以在显示对话框后立即启动 Timer
x 秒,然后执行您的功能。如果用户单击您的按钮,您可以停止计时器。
Timer _timer;
bool userResponded = false;
您将需要 StatefulWidget
并且无论您在何处显示对话框,都需要启动计时器。
showDialog(...); // Your showDialog method
// You have to update userResponded to true if user clicks on your dialog or whatever
// It should look something like this: setState(() => userResponded = true);
_timer = Timer(const Duration(seconds: 10), () { // Start your timer for x seconds
if (!userResponded) { // If user didn't respond
// execute your function
}
});
此外,您需要覆盖 onDispose
方法并停止计时器:
@override
void onDispose() {
_timer?.cancel();
super.onDispose();
}
我对 flutter 有点陌生。我进行了搜索但找不到合适的答案...如果用户在 x 秒后未响应 showDialog 警报,调用函数的最佳方式是什么?如果用户按下按钮,那么我不想执行该功能。
为此,您将使用计时器小部件。
计时器示例:
Timer _timer = Timer(
const Duration(milliseconds: 500),
() {
// Call some function after delay of 500ms
},
);
要取消定时器,使用_timer.cancel();
所以,很可能在 initState 方法中你会想要设置定时器对象,然后当用户按下按钮时,你可以取消这个定时器,这意味着它的回调不会 运行您指定的延迟。
您可以在显示对话框后立即启动 Timer
x 秒,然后执行您的功能。如果用户单击您的按钮,您可以停止计时器。
Timer _timer;
bool userResponded = false;
您将需要 StatefulWidget
并且无论您在何处显示对话框,都需要启动计时器。
showDialog(...); // Your showDialog method
// You have to update userResponded to true if user clicks on your dialog or whatever
// It should look something like this: setState(() => userResponded = true);
_timer = Timer(const Duration(seconds: 10), () { // Start your timer for x seconds
if (!userResponded) { // If user didn't respond
// execute your function
}
});
此外,您需要覆盖 onDispose
方法并停止计时器:
@override
void onDispose() {
_timer?.cancel();
super.onDispose();
}