88 lines
2.2 KiB
Dart
88 lines
2.2 KiB
Dart
// 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({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp.router(
|
|
routerConfig: _router,
|
|
);
|
|
}
|
|
}
|
|
|
|
/// The home screen
|
|
class HomeScreen extends StatelessWidget {
|
|
/// Constructs a [HomeScreen]
|
|
const HomeScreen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('Home Screen')),
|
|
body: Center(
|
|
child: 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({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('Details Screen')),
|
|
body: Center(
|
|
child: ElevatedButton(
|
|
onPressed: () => context.go('/'),
|
|
child: const Text('Go back to the Home screen'),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|