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가 되어 있었다하더라도.