Untitled
unknown
plain_text
10 months ago
3.3 kB
5
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