Untitled
unknown
plain_text
4 months ago
3.3 kB
4
Indexable
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:trl_audio/constants/colors.dart'; import 'package:trl_audio/di.dart'; import 'package:trl_audio/extensions/number_ext.dart'; import 'package:trl_audio/libraries/toasts_popups.dart'; import 'package:trl_audio/services/auth_service.dart'; import 'package:trl_audio/services/routes.dart'; import 'package:trl_audio/services/storage_service.dart'; import 'package:trl_audio/utils/assets.dart'; import 'package:trl_audio/utils/size_config.dart'; import 'package:trl_audio/widgets/core/pop_scope_navigator.dart'; import 'package:trl_audio/widgets/library/svg_image.dart'; const _DURATION = Duration(milliseconds: 1200); class SplashScreen extends StatefulWidget { @override State<SplashScreen> createState() => _SplashScreenState(); } class _SplashScreenState extends State<SplashScreen> with TickerProviderStateMixin { late AnimationController _progressAnimController; late Animation<double> _progressAnimation; @override void initState() { super.initState(); _progressAnimController = AnimationController(duration: _DURATION, vsync: this); _progressAnimation = Tween<double>(begin: 0, end: 1).animate(_progressAnimController); _progressAnimController.forward(); WidgetsBinding.instance.addPostFrameCallback((_) => _navigateAfterDelay()); } Future<void> _navigateAfterDelay() async { await Future.delayed(_DURATION); sl<ToastPopup>().onToast(message: 'Step 1', isTop: true); var authStatus = sl<AuthService>().authStatus ?? false; var user = sl<StorageService>().user; sl<ToastPopup>().onToast(message: 'Step 2', isTop: true); if (!authStatus || user?.id == null) { await sl<Routes>().mail().pushAndRemoveUntil(); } else { sl<ToastPopup>().onToast(message: 'Step 4', isTop: true); await sl<Routes>().landing(index: 0).push(); } } @override void didChangeDependencies() { super.didChangeDependencies(); SizeConfig.initMediaQuery(context); } @override void dispose() { _progressAnimController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return PopScopeNavigator( canPop: false, child: Scaffold( body: Container( color: dark, width: SizeConfig.width, height: SizeConfig.height, child: Column( children: [ SizedBox(height: 37.height), SvgImage(image: Assets.app_icon.app_logo, height: SizeConfig.isMobile ? 48 : 80), SizedBox(height: SizeConfig.isMobile ? 24 : 32), AnimatedBuilder( animation: _progressAnimation, builder: (context, child) => Container( width: 40.width, child: _progressIndicator(), ), ), ], ), ), ), ); } Widget _progressIndicator() { return LinearProgressIndicator( minHeight: SizeConfig.isMobile ? 4 : 8, value: _progressAnimation.value, backgroundColor: const Color(0xFF454A58), valueColor: const AlwaysStoppedAnimation<Color>(Color(0xFFd1d7e9)), borderRadius: BorderRadius.circular(4), ); } }
Editor is loading...
Leave a Comment