Эквивалент Android TaskStackBuilder в go_router флаттераAndroid

Форум для тех, кто программирует под Android
Anonymous
Эквивалент Android TaskStackBuilder в go_router флаттера

Сообщение Anonymous »

Я хочу имитировать TaskStackBuilder из родного Android (вот так), используя go_router во флаттере.
По сути, я хочу, чтобы когда пользователь получил доступ к глубокой ссылке из маршрута, он перешел на этот экран, имея правильный задний стек. Предположим, мой маршрут выглядит следующим образом:

Код: Выделить всё

GoRouter(
routes: [
GoRoute(
path: "/",
name: AppRouteName.home
builder: (context, routerState) {
return const HomeScreen();
},
),
GoRoute(
path: "/promo",
name: AppRouteName.promo
builder: (context, routerState) {
return const ListPromoScreen();
},
routes: [
GoRoute(
path: ":id,
name: AppRouteName.promoDetail
builder: (context, routerState) {
return const PromoDetailScreen(routerState.id);
}
),
]
),
GoRoute(
path: "/invoice",
name: AppRouteName.invoice,
builder: (context, routerState) {
return ListInvoicesScreen();
},
),
GoRoute(
path: "/changePassword",
name: AppRouteName.changePassword,
builder: (context, routerState) {
return const ChangePasswordScreen();
},
),
]
)
Я обнаружил, что обратного стека можно достичь за счет вложенных маршрутов, как показано ListPromoScreen и PromoScreenDetail. Но это даст пользователю обратный стек только до ListPromoScreen (когда глубокая ссылка выглядит как packageName://app/promo:id), в то время как я хочу, чтобы у пользователя был обратный стек до HomeScreen .
Я думаю, что если мы будем использовать подмаршруты/вложенный маршрут из go_router, дерево маршрутизатора будет слишком глубоким, поскольку у меня есть последовательный поток, который может состоять из 4 последовательно подключенный экран/активность. Я не думаю, что вложенные маршруты подходят для этого случая.
Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -go-router

Вернуться в «Android»