[英]Flutter back-pressed shows black screen
在導航抽屜屏幕出現給用戶之前,我已經在顫動中創建了NavigationDrawer
我在它之前有 3 個屏幕
當用戶從導航抽屜屏幕按下 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(),
)
用例:pushNamedAndRemoveUntil
Navigator.of(context).pushNamedAndRemoveUntil('/LoginFieldForm',
(Route<dynamic> route) => false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.