在 Flutter 中,如何在立即呼叫另一個函式之前等待螢屏的初始化?
對于進一步的背景關系,當我按下一個按鈕時,我會打開一個對話框,其中包含來自相機包的相機預覽,其中一個容器框堆疊在相機預覽的頂部以充當“取景器”。然后我想從 rect_getter 包中呼叫 RectGetter 函式來定位容器框螢屏上的坐標,但是我需要等待首先構建 CameraPreview 和容器框。
下面是我呼叫的相機對話框,我需要在呼叫 RectGetter 函式之前構建它:
cameraDialog() async {
await showDialog(
barrierDismissible: false,
context: context,
builder: (_) => AlertDialog(
insetPadding: EdgeInsets.all(5.0),
contentPadding: EdgeInsets.all(3.0),
content: FutureBuilder<void>(
future: _initializeControllerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Stack(
children: [
cameraPrevew and containers etc...
我知道這篇文章: 如何在 Flutter 中延遲一段時間后運行代碼?
所有這些解決方案都只是呼叫一個延遲計時器,我認為它會起作用,但是我正在尋找一個更動態的解決方案。
uj5u.com熱心網友回復:
你可以使用
https://github.com/slightfoot/flutter_after_layout
它只在布局完成后執行一次功能。或者只是查看它的實作并將其添加到您的代碼中:-)
這基本上是
void initState() {
super.initState();
WidgetsBinding.instance
.addPostFrameCallback((_) => yourFunction(context));
}
uj5u.com熱心網友回復:
我認為您正在尋找的是同時呼叫兩個函式,而不是等待其中一個完成然后啟動另一個。如果這是您想要的,則需要在呼叫或初始化這兩個函式時洗掉 async 和 await 。就像在代碼片段中一樣,您需要在前兩行中洗掉 async 和 await。
您共享的代碼片段包含有關何時何地呼叫這兩個函式以及如何呼叫它們的相對較少的資訊..!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412725.html
標籤:
上一篇:將影像部分放在螢屏外并旋轉它
下一篇:linux白了又白
