// 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 createState() => _BookstoreState(); } class _BookstoreState extends State { 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(); } }