82 lines
2.3 KiB
Dart
82 lines
2.3 KiB
Dart
// Copyright 2021, the Flutter project authors. Please see the AUTHORS file
|
|
// for details. 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 'auth.dart';
|
|
import 'routing.dart';
|
|
import 'screens/navigator.dart';
|
|
|
|
class Bookstore extends StatefulWidget {
|
|
const Bookstore({super.key});
|
|
|
|
@override
|
|
State<Bookstore> createState() => _BookstoreState();
|
|
}
|
|
|
|
class _BookstoreState extends State<Bookstore> {
|
|
late final RouteState _routeState;
|
|
late final SimpleRouterDelegate _routerDelegate;
|
|
late final TemplateRouteParser _routeParser;
|
|
|
|
@override
|
|
void initState() {
|
|
/// Configure the parser with all of the app's allowed path templates.
|
|
_routeParser = TemplateRouteParser(
|
|
allowedPaths: [
|
|
'/signin',
|
|
'/authors',
|
|
'/settings',
|
|
'/books/new',
|
|
'/books/all',
|
|
'/books/popular',
|
|
'/book/:bookId',
|
|
'/author/:authorId',
|
|
],
|
|
initialRoute: '/signin',
|
|
);
|
|
|
|
_routeState = RouteState(_routeParser);
|
|
|
|
_routerDelegate = SimpleRouterDelegate(
|
|
routeState: _routeState,
|
|
);
|
|
|
|
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) => RouteStateScope(
|
|
notifier: _routeState,
|
|
child: MaterialApp.router(
|
|
routerDelegate: _routerDelegate,
|
|
routeInformationParser: _routeParser,
|
|
// Revert back to pre-Flutter-2.5 transition behavior:
|
|
// https://github.com/flutter/flutter/issues/82053
|
|
theme: ThemeData(
|
|
useMaterial3: true,
|
|
pageTransitionsTheme: const PageTransitionsTheme(
|
|
builders: {
|
|
TargetPlatform.android: FadeUpwardsPageTransitionsBuilder(),
|
|
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
|
|
TargetPlatform.linux: FadeUpwardsPageTransitionsBuilder(),
|
|
TargetPlatform.macOS: CupertinoPageTransitionsBuilder(),
|
|
TargetPlatform.windows: FadeUpwardsPageTransitionsBuilder(),
|
|
},
|
|
),
|
|
),
|
|
|
|
),
|
|
);
|
|
|
|
|
|
@override
|
|
void dispose() {
|
|
_routeState.dispose();
|
|
_routerDelegate.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|