我想呼叫一個加載螢屏小部件,它有一個帶有影像、文本和加載指示器的列,在螢屏構建后 5 秒應該呼叫一個 setState 方法來更改布林值 [foundOpponent] 并且螢屏(文本應變為“找到對手”,指示器變為圖示)之后應該有 2 秒的延遲,然后將 Navigator.push 到另一個螢屏。
我已經查看了https://stackoverflow.com/questions/49466556/flutter-run-method-on-widget-build-complete并嘗試了大多數解釋的方法,它有些作業但虛擬手機的螢屏非常滯后,應該在構建方法中構建的影像甚至不會顯示,并且在影像加載時應該在構建執行后呼叫的方法。
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
sleep(const Duration(seconds: 10));
setState(() {
foundOpponent = true;
});
sleep(const Duration(milliseconds: 2500));
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const QuestionMainPage()),
);
});
}
我嘗試了以下方法:
WidgetsBinding.instance
.addPostFrameCallback((_) => yourFunction(context));
SchedulerBinding.instance.addPostFrameCallback((_) => yourFunction(context));
if (SchedulerBinding.instance.schedulerPhase == SchedulerPhase.persistentCallbacks) {
SchedulerBinding.instance.addPostFrameCallback((_) => yourFunction(context));
}
Future<void> _runsAfterBuild() async {
await Future((){}); // <-- Dummy await
// This code runs after build
}
@override
Widget build(BuildContext context) {
_runsAfterBuild();
return Container();
}
uj5u.com熱心網友回復:
嘗試使用 Future.delayed并確保將await
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
await Future.delayed(Duration(seconds: 10));
//await task a
await Future.delayed(Duration(seconds: 1));
//await task B
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522166.html
上一篇:在顫振中發送導航器中的提供者
