[Feature] Replace go_router with auto_route

This commit is contained in:
PartyDonut 2024-10-05 16:29:51 +02:00
parent b31cc86ae8
commit 144c8faf70
42 changed files with 1181 additions and 980 deletions

View file

@ -1,14 +1,17 @@
import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/account_model.dart';
import 'package:fladder/providers/shared_provider.dart';
import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/routes/build_routes/home_routes.dart';
import 'package:fladder/routes/build_routes/route_builder.dart';
import 'package:fladder/screens/shared/fladder_logo.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@RoutePage()
class SplashScreen extends ConsumerStatefulWidget {
const SplashScreen({super.key});
final Function(bool loggedIn)? loggedIn;
const SplashScreen({this.loggedIn, super.key});
@override
ConsumerState<ConsumerStatefulWidget> createState() => _SplashScreenState();
@ -18,23 +21,26 @@ class _SplashScreenState extends ConsumerState<SplashScreen> {
@override
void initState() {
super.initState();
Future.microtask(() async {
WidgetsBinding.instance.addPostFrameCallback((value) async {
await Future.delayed(const Duration(milliseconds: 500));
final AccountModel? lastUsedAccount = ref.read(sharedUtilityProvider).getActiveAccount();
ref.read(userProvider.notifier).updateUser(lastUsedAccount);
if (context.mounted) {
if (lastUsedAccount == null) {
context.routeGo(LoginRoute());
widget.loggedIn?.call(false);
context.router.maybePop(false);
} else {
switch (lastUsedAccount.authMethod) {
case Authentication.autoLogin:
context.routeGo(DashboardRoute());
widget.loggedIn?.call(true);
context.router.maybePop(true);
break;
case Authentication.biometrics:
case Authentication.none:
case Authentication.passcode:
context.routeReplace(LoginRoute());
widget.loggedIn?.call(false);
context.router.maybePop(false);
break;
}
}