[英]Flutter PopUntil Black Screen Despite Route On Stack
我正在嘗試使用 Navigator.popUntil,但我一直以空白屏幕結束。 我知道如果您彈出的屏幕不在堆棧中,則可能會發生這種情況,但對我來說不是這種情況; 我的屏幕應該在堆棧中。 我正在使用命名路線,如果這有所作為。
當用戶按下“否”按鈕時,我想彈出對話框,然后彈出刪除屏幕以返回帳戶管理屏幕,如圖所示。
TextButton(
child: const Text("No"),
onPressed: () {
Navigator.popUntil(
context, ModalRoute.withName(AppRoutes.accountManagement));
}),
AppRoutes.accountManagement 定義為:
static const accountManagement = '/accountManagement';
ApplicationManagement、AccountManagement 和 DeleteAccount 頁面使用以下代碼推送到堆棧中:
///Called to navigate on the main, global navigator
void _routeNavigation(String route) {
try {
Navigator.pushNamed(context, route);
} catch (e) {
DebugLog.printToConsole("Exception during navigation: Exception $e");
}
}
其中每個字符串定義如下:
static const appManagement = '/appManagement';
static const accountManagement = '/accountManagement';
static const deleteAccount = '/deleteAccount';
似乎彈出沒有在堆棧上找到 AppRoutes.accountManagement 路由,但我不明白為什么。 這些屏幕應該嵌套嗎? 也就是說,我看到它們在小部件查看器中都處於同一級別(如圖所示)。 我做錯了什么導致 popuntil 無法識別堆棧上的路由?
嘗試像這樣彈出它
Navigator.of(context).popUntil((route) => route.settings.name == "${AppRoutes.accountManagement}");
嘗試這個:
Navigator.of(context).pop();
Future.delayed(const Duration(milliseconds: 500), () {
Navigator.pushNamedAndRemoveUntil(context, '/accountManagement', (_) => false);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.