簡體   English   中英

Flutter:按后退按鈕關閉兩個屏幕

[英]Flutter : Pressing back button closes two screens

我已從儀表板導航到名為“A”的某個屏幕。 在該屏幕中,我使用 ListView Builder 顯示了一個列表。 在那,單擊 ListView 中的項目導航到另一個名為“B”的屏幕。 當我在該屏幕“B”中按下后退按鈕時,它會導航到儀表板。 但它必須導航到屏幕“A”。 請幫我解決這個問題。

在儀表板中,我使用以下代碼導航到屏幕“A”,

  _showSnackBar(BuildContext context, Item item) {
    switch(item.name)
    {
      
      case "Disputes":
        Navigator.push(context, MaterialPageRoute(builder: (context)=> Disputes()));
        break;
        
    }
  }
}

在屏幕“A”中,我使用以下代碼導航到屏幕“B”,

 Card(
                                                child: ListTile(
                                                  onTap: () {
                                                    Navigator.push(
                                                        context,
                                                        MaterialPageRoute(
                                                            builder: (context) =>
                                                                SubmitDisputes(disputesId: disputeResList[index].id.toString())));
                                                  },
                                                  trailing: Icon(
                                                      Icons.remove_red_eye),
                                               
                                              ));
                                        }),
                                  ),
                                ),

當我在屏幕“B”中按下后退按鈕時,它會導航到儀表板。 但是我需要根據 backstacks 導航到“A”。

請幫我!

所以正如評論中所討論的那樣。 使用Navigator.of(context,rootNavigator: true).push(...)解決了這個問題。
但你為什么一開始會遇到這個問題? 因為您的應用中有多個MaterialApp 你只需要在main.dart保留一個作為根小部件。 所以你有兩個選擇:

  1. 僅使用一個MaterialApp作為根小部件並調用Navigator.of(context).push(...)
  2. 有多個MaterialApp並使用Navigator.of(context,rootNavigator: true).push(...)

如果您需要我的建議,請使用 1。

暫無
暫無

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

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