From 539b79a20ede88d5c34d3267a8e4b5f076fcfc1c Mon Sep 17 00:00:00 2001 From: Shawn Date: Thu, 11 Jan 2024 10:16:05 -0700 Subject: [PATCH] Add temporary navSpike to sanity check routing solutions --- lib/main.dart | 10 +++++++-- lib/nav_spike.dart | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 lib/nav_spike.dart diff --git a/lib/main.dart b/lib/main.dart index 45005d5e..bcd3c169 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,17 +9,23 @@ import 'package:wonders/logic/locale_logic.dart'; import 'package:wonders/logic/timeline_logic.dart'; import 'package:wonders/logic/unsplash_logic.dart'; import 'package:wonders/logic/wonders_logic.dart'; +import 'package:wonders/nav_spike.dart'; import 'package:wonders/ui/common/app_shortcuts.dart'; void main() async { WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); // Keep native splash screen up until app is finished bootstrapping FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); + GoRouter.optionURLReflectsImperativeAPIs = true; // Start app registerSingletons(); - runApp(WondersApp()); - await appLogic.bootstrap(); + + // Spike: + runApp(NavSpikeApp()); + + //runApp(WondersApp()); + //await appLogic.bootstrap(); // Remove splash screen when bootstrap is complete FlutterNativeSplash.remove(); diff --git a/lib/nav_spike.dart b/lib/nav_spike.dart new file mode 100644 index 00000000..49799bbf --- /dev/null +++ b/lib/nav_spike.dart @@ -0,0 +1,54 @@ +import 'package:advanced_navigator/advanced_navigator.dart'; +import 'package:wonders/common_libs.dart'; + +final GoRouter _router = GoRouter( + initialLocation: '/a', + routes: [ + GoRoute( + path: '/a', + builder: (BuildContext context, GoRouterState state) => Screen(name: 'A'), + ), + GoRoute( + path: '/b', + builder: (BuildContext context, GoRouterState state) => Screen(name: 'B'), + ), + GoRoute( + path: '/c', + builder: (BuildContext context, GoRouterState state) => Screen(name: 'C'), + ), + ], +); + +/// The main app. +class NavSpikeApp extends StatelessWidget { + const NavSpikeApp({super.key}); + + @override + Widget build(BuildContext context) => MaterialApp.router(routerConfig: _router); +} + +/// The home screen +class Screen extends StatelessWidget { + const Screen({super.key, required this.name}); + final String name; + + @override + Widget build(BuildContext context) { + void navigate(String name) => context.push(name); + + return Scaffold( + appBar: AppBar(title: Text(name)), + body: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(name, style: TextStyle(fontSize: 48)), + ElevatedButton(onPressed: () => navigate('/a'), child: const Text('A')), + ElevatedButton(onPressed: () => navigate('/b'), child: const Text('B')), + ElevatedButton(onPressed: () => navigate('/c'), child: const Text('C')), + ], + ), + ), + ); + } +}