簡體   English   中英

Flutter 后退顯示黑屏

[英]Flutter back-pressed shows black screen

在導航抽屜屏幕出現給用戶之前,我已經在顫動中創建了NavigationDrawer我在它之前有 3 個屏幕

  1. 啟動畫面
  2. 介紹滑塊
  3. 登錄畫面
  4. 導航抽屜

當用戶從導航抽屜屏幕按下 Android 手機中的后退按鈕時,我想關閉我的應用程序,但它會顯示黑屏。

我在下面調用了從登錄到抽屜的導航

      Navigator.pushAndRemoveUntil(
                context,
                MaterialPageRoute(
                  builder: (BuildContext context) => NavigationDrawerDemo(),
                ),
                ModalRoute.withName('/LoginFieldForm'));

我打電話給 loginfieldform

  Navigator.push(context,
    new MaterialPageRoute(builder: (context) =>new LoginFieldForm()));

我認為您已經使用 Navigator.push 方法推送了“LoginFieldForm”並嘗試使用命名路由將其刪除。

例如:

// 使用 Navigator.push 方法推送路由

Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => LoginFieldForm()),
      );

// 使用命名路由刪除。

Navigator.pushAndRemoveUntil(
                context,
                MaterialPageRoute(
                  builder: (BuildContext context) => NavigationDrawerDemo(),
                ),
                ModalRoute.withName('/LoginFieldForm'));

如果您使用命名路由添加了路由,則只能使用 ModalRoute.withName()。

您的路線可能沒有設置名稱。 如果是這樣,彈出直到名稱匹配將導致彈出所有內容,因為永遠不會找到您要查找的名稱。

當您推送LoginFieldForm確保將settings傳遞給路由。

推送時,您可以這樣做:

MaterialPageRoute(
    settings: RouteSettings(name: "routeName"),
    builder: (context) => YourWidget(),
)

如果您在onGenerateRoute您已經將settings作為參數傳遞給onGenerateRoute函數。 在這種情況下,只需將它們轉發到MaterialPageRoute

MaterialPageRoute(
    settings: settings, //these settings are arguments from the function
    builder: (context) => YourWidget(),
)

要關閉應用程序,您可以使用dart:io exit(0)返回 press.exit(0) 幫助使用給定的退出代碼立即退出 Dart VM 進程。

這不會等待任何異步操作終止。 您可以在此處找到有關 exit(0) 的更多信息

或者

SystemChannels.platform.invokeMethod('SystemNavigator.pop');

有關更多詳細信息,您可以在此處查看

用例:pushNamedAndRemoveUntil

 Navigator.of(context).pushNamedAndRemoveUntil('/LoginFieldForm', 
(Route<dynamic> route) => false);

暫無
暫無

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

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