Nesta tela de detalhes do pedido, estou indo de duas telas diferentes, uma é das telas orders_lists e uma do pop-up de checkout para mostrar os detalhes do pedido após fazer o pedido com sucesso, mas quero que quando eu voltar da tela de detalhes, eu vá apenas para a tela orders_list
Alguém pode ter uma solução para isso?
Aqui está a tela de detalhes do meu pedido
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: AppColors.appbarColor,
title: Text(
'Order Details',
style: GoogleFonts.poppins(color: AppColors.textColor),
),
),
body: Stack(
children: [
WebViewWidget(controller: _webViewController),
if (_isLoading)
Center(
child: CircularProgressIndicator(
color: AppColors.buttonColor,
),
),
],
),
);
}
}
O que você quer é uma navegação declarativa , onde você pode descrever como quer navegar — como "sempre vá para a tela de listas de pedidos a partir da tela de detalhes do pedido". Isso é diferente da navegação imperativa , que você usa quando chama o método
push
oupop
deNavigator
, onde você tem que especificar manualmente cada ação de navegação.A maneira oficial de fazer navegação declarativa no flutter é com o pacote go_router . Veja como você pode definir seu roteador para que ele sempre
OrderDetails
vá para , não importa como você navegue até ele:OrderLists
Com
GoRouter
, você atribui um caminho (que é umString
) para cada página no seu roteador. Você especifica sua tela inicial passando seu caminho para oinitialLocation
parâmetro. Você então navega para suas páginas passando seu caminho para ocontext.go
método, e você pop usandocontext.pop()
. Nós definimosorder details
como uma sub-rota deorder lists
, então navegaríamos até ela usandocontext.go('/order-lists/order-details')
. Comoorder details
é uma sub-rota deorder lists
, ela sempre retornará paraorder lists
.Para usar seu
GoRouter
, use oMaterialApp.router
construtor:Resultado
Exemplo completo
Aqui está o código completo que produz esta gravação: