12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // 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'),
- ),
- ],
- ),
- ),
- );
- }
- }
|