import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'router/router_listenable.dart'; import 'router/routes.dart'; import 'utils/state_logger.dart'; void main() { runApp( const ProviderScope( observers: [StateLogger()], child: MyAwesomeApp(), ), ); } class MyAwesomeApp extends HookConsumerWidget { const MyAwesomeApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final notifier = ref.watch(routerListenableProvider.notifier); final key = useRef(GlobalKey(debugLabel: 'routerKey')); final router = useMemoized( () => GoRouter( navigatorKey: key.value, refreshListenable: notifier, initialLocation: SplashRoute.path, debugLogDiagnostics: true, routes: $appRoutes, redirect: notifier.redirect, ), [notifier], ); return MaterialApp.router( routerConfig: router, title: 'hooks_riverpod + go_router Demo', theme: ThemeData( primarySwatch: Colors.cyan, ), ); } }