import 'package:flutter/material.dart';
import 'package:go_router_v7_actual/layout/default_layout.dart';
import 'package:go_router/go_router.dart';
class PushScreen extends StatelessWidget {
const PushScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return DefaultLayout(
body: ListView(
children: [
ElevatedButton(
onPressed: () {
context.push('/basic');
},
child: Text('Push Basic'),
),
ElevatedButton(
onPressed: () {
context.go('/basic');
},
child: Text('Go Basic'),
),
],
),
);
}
}
context.go 를 하면 저장되지 않는다.
그러나 context.push 를 하면 어떻게 되냐
GoRoute(
path: '/',
builder: (context, state) {
return RootScreen();
},
routes: [
GoRoute(
path: 'basic',
builder: (context, state) {
return BasicScreen();
},
),
GoRoute(
path: 'named',
name: 'named_screen',
builder: (context, state) {
return BasicScreen();
},
),
GoRoute(
path: 'push',
builder: (context, state) {
return PushScreen();
},
),
push의 상위 스크린을 먼저 올리고 push 스크린을 올린다.
context.push(’push’)를 하면 RootScreen이 올라가고 PushScreen이 올라간다.
go를 하는 순간 선언 그대로 라우터를 초기화한다.
그전에 아무리 push가 되어 있었다하더라도.