| 
					
				 | 
			
			
				@@ -0,0 +1,97 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Copyright 2013 The Flutter Authors. All rights reserved. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Use of this source code is governed by a BSD-style license that can be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// found in the LICENSE file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import 'package:flutter/material.dart'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import 'package:go_router/go_router.dart'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// This sample app shows an app with two screens. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The first route '/' is mapped to [HomeScreen], and the second route 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// '/details' is mapped to [DetailsScreen]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The buttons use context.go() to navigate to each destination. On mobile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// devices, each destination is deep-linkable and on the web, can be navigated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// to using the address bar. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void main() => runApp(const MyApp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The route configuration. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+final GoRouter _router = GoRouter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  routes: <RouteBase>[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    GoRoute( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      path: '/', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      builder: (BuildContext context, GoRouterState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return const HomeScreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      routes: <RouteBase>[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        GoRoute( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          path: 'details', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          builder: (BuildContext context, GoRouterState state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return const DetailsScreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The main app. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class MyApp extends StatelessWidget { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /// Constructs a [MyApp] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const MyApp({Key? key}) : super(key: key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Widget build(BuildContext context) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return MaterialApp.router( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      routerConfig: _router, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The home screen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class HomeScreen extends StatelessWidget { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /// Constructs a [HomeScreen] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const HomeScreen({Key? key}) : super(key: key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Widget build(BuildContext context) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return Scaffold( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      appBar: AppBar(title: const Text('Home Screen')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      body: Center( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        child: Column( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          mainAxisAlignment: MainAxisAlignment.center, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          children: <Widget>[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ElevatedButton( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onPressed: () => context.go('/details'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              child: const Text('Go to the Details screen'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/// The details screen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class DetailsScreen extends StatelessWidget { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /// Constructs a [DetailsScreen] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const DetailsScreen({Key? key}) : super(key: key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  @override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Widget build(BuildContext context) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return Scaffold( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      appBar: AppBar(title: const Text('Details Screen')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      body: Center( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        child: Column( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          mainAxisAlignment: MainAxisAlignment.center, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          children: <ElevatedButton>[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ElevatedButton( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onPressed: () => context.go('/'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              child: const Text('Go back to the Home screen'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |