簡體   English   中英

僅當上一個屏幕完成加載后,如何導航到 Flutter 中的下一個屏幕?

[英]How to navigate to next screen in Flutter only when the previous screen has finished loading?

標題幾乎解釋了我想要做什么。 我有一個應用程序,其中 init state 具有要調用的異步方法。 構建中還有一些按鈕,當按下時會執行異步方法(api 調用)。

問題是,如果我在前一個屏幕完成完全加載之前導航到新屏幕,應用程序會顯示模棱兩可的行為,例如沒有完全加載下一個屏幕或完全崩潰。

  1. 我的問題是,當您在完成執行之前導航到新屏幕時,前一個屏幕的異步方法會發生什么?

  2. 有沒有辦法在導航到新屏幕時暫停/取消這些異步方法的執行,並在返回該屏幕時恢復/重新加載?

或者

有沒有辦法只在前一個屏幕完成完全加載時導航到新屏幕。

如果我的問題似乎存在知識空白,我深表歉意。 TIA

如果您使用Navigator.push(...); 然后屏幕 1 state 加載應該完成加載您的 API 狀態/數據,即使顯示屏幕 2。 但是如果你使用Navigator.pushReplacement(...); 從屏幕 1 導航到屏幕 2,然后應停止加載屏幕 1 state,因為在層次結構中,您的屏幕已被屏幕 2 替換。

如果您只想在屏幕 state 1 已滿載時調用 function ,您可以使用:

void initState() {
    super.initState();
    WidgetsBinding.instance
        .addPostFrameCallback((_) => myFunction());
}

如果您不等待就導航到下一個屏幕,它仍然會運行直到完成。 所有普通的移動應用程序都有一個叫做加載小部件的東西。 它在您開始調用異步方法時出現,並在完成時消失。 對我來說,我經常在任何屏幕上使用Stack ,所以它可以防止用戶在手機上按下任何東西。 如果您想等待 util 移動到下一個屏幕,請使用await

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM