import 'package:camera/camera.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:quid_faciam_hodie/constants/apis.dart'; import 'package:quid_faciam_hodie/constants/spacing.dart'; import 'package:quid_faciam_hodie/managers/global_values_manager.dart'; import 'package:quid_faciam_hodie/models/memories.dart'; import 'package:quid_faciam_hodie/widgets/dot_animation.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import 'main_screen.dart'; import 'welcome_screen.dart'; class ServerLoadingScreen extends StatefulWidget { static const ID = 'server_loading'; const ServerLoadingScreen({Key? key}) : super(key: key); @override State createState() => _ServerLoadingScreenState(); } class _ServerLoadingScreenState extends State { @override void initState() { super.initState(); } Future load() async { if (!GlobalValuesManager.hasBeenInitialized) { GlobalValuesManager.setCameras(await availableCameras()); await Supabase.initialize( url: SUPABASE_API_URL, anonKey: SUPABASE_API_KEY, debug: kDebugMode, ); GlobalValuesManager.setHasBeenInitialized(true); } final memories = context.read(); final session = Supabase.instance.client.auth.session(); if (session != null) { memories.initialize().then((_) { Navigator.pushReplacementNamed(context, MainScreen.ID); }); } else { Navigator.pushReplacementNamed(context, WelcomeScreen.ID); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black, body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: const [ Icon(Icons.cloud, size: 60), SizedBox(height: SMALL_SPACE), DotAnimation( initialFadeInDelay: Duration.zero, fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), DotAnimation( initialFadeInDelay: Duration(seconds: 2), fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), DotAnimation( initialFadeInDelay: Duration(seconds: 4), fadeInDuration: Duration(seconds: 1), fadeOutDuration: Duration(seconds: 1), fadeInDelay: Duration(seconds: 4), fadeOutDelay: Duration.zero, ), SizedBox(height: SMALL_SPACE), Icon(Icons.smartphone, size: 60), SizedBox(height: LARGE_SPACE), Text( 'We are loading your data', ), ], ), ), ); } }