38 lines
1.1 KiB
Dart
38 lines
1.1 KiB
Dart
import 'package:finnow_app/main.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:watch_it/watch_it.dart';
|
|
|
|
import 'auth/model.dart';
|
|
|
|
/// The main Finnow application.
|
|
class FinnowApp extends StatelessWidget with WatchItMixin {
|
|
const FinnowApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final router = getIt<GoRouter>();
|
|
|
|
// We add a top-level listener for anytime the authentication model changes.
|
|
// If it does, we need to refresh navigation.
|
|
registerChangeNotifierHandler(handler:(context, AuthenticationModel newValue, cancel) {
|
|
if (newValue.state.authenticated()) {
|
|
router.replace('/profiles');
|
|
} else {
|
|
while (router.canPop()) {
|
|
router.pop();
|
|
}
|
|
router.pushReplacement('/login');
|
|
}
|
|
},);
|
|
|
|
return MaterialApp.router(
|
|
routerConfig: router,
|
|
title: 'Finnow',
|
|
theme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
|
|
useMaterial3: true,
|
|
));
|
|
}
|
|
}
|