96 lines
2.7 KiB
Dart
96 lines
2.7 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';
|
|
|
|
void main() => runApp(App());
|
|
|
|
/// The main app.
|
|
class App extends StatelessWidget {
|
|
/// Creates an [App].
|
|
App({super.key});
|
|
|
|
/// The title of the app.
|
|
static const String title = 'GoRouter Example: Router neglect';
|
|
|
|
@override
|
|
Widget build(BuildContext context) => MaterialApp.router(
|
|
routerConfig: _router,
|
|
title: title,
|
|
);
|
|
|
|
final GoRouter _router = GoRouter(
|
|
// turn off history tracking in the browser for this navigation
|
|
routerNeglect: true,
|
|
routes: <GoRoute>[
|
|
GoRoute(
|
|
path: '/',
|
|
builder: (BuildContext context, GoRouterState state) =>
|
|
const Page1Screen(),
|
|
),
|
|
GoRoute(
|
|
path: '/page2',
|
|
builder: (BuildContext context, GoRouterState state) =>
|
|
const Page2Screen(),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
|
|
/// The screen of the first page.
|
|
class Page1Screen extends StatelessWidget {
|
|
/// Creates a [Page1Screen].
|
|
const Page1Screen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Scaffold(
|
|
appBar: AppBar(title: const Text(App.title)),
|
|
body: Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: <Widget>[
|
|
ElevatedButton(
|
|
onPressed: () => context.go('/page2'),
|
|
child: const Text('Go to page 2'),
|
|
),
|
|
const SizedBox(height: 8),
|
|
ElevatedButton(
|
|
// turn off history tracking in the browser for this navigation;
|
|
// note that this isn't necessary when you've set routerNeglect
|
|
// but it does illustrate the technique
|
|
onPressed: () => Router.neglect(
|
|
context,
|
|
() => context.push('/page2'),
|
|
),
|
|
child: const Text('Push page 2'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/// The screen of the second page.
|
|
class Page2Screen extends StatelessWidget {
|
|
/// Creates a [Page2Screen].
|
|
const Page2Screen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Scaffold(
|
|
appBar: AppBar(title: const Text(App.title)),
|
|
body: Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: <Widget>[
|
|
ElevatedButton(
|
|
onPressed: () => context.go('/'),
|
|
child: const Text('Go to home page'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|