Files
Remever/lib/screens/splash/splash_screen.dart

80 lines
2.1 KiB
Dart

import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/widgets/wspace.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/components/extensions/state.dart';
import 'package:remever/gen/assets.gen.dart';
import 'package:remever/router.gr.dart';
import 'package:remever/services/auth/auth_interface.dart';
@RoutePage()
class SplashScreen extends StatefulWidget {
///
/// Стартовый экран
///
const SplashScreen({super.key});
@override
State<SplashScreen> createState() => _SplashScreenState();
}
///
/// Состояние экрана
///
class _SplashScreenState extends State<SplashScreen> {
/// Сервисы
final AuthInterface _authIf = GetIt.I.get<AuthInterface>();
/// Запуск анимации лого
bool _launchLogo = false;
///
/// Навигация на основной экран
///
void _navigate() async {
// context.replaceRoute(const HomeRoute());
// return;
final bool isAuth = await _authIf.isAuth;
if (!mounted) return;
context.replaceRoute(isAuth ? CollectionRoute() : const AuthRoute());
}
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((Duration timeStamp) {
Future<void>.delayed(const Duration(milliseconds: 900), () {
safeSetState(() => _launchLogo = !_launchLogo);
});
// Future<void>.delayed(const Duration(seconds: 4), _navigate);
Future<void>.delayed(const Duration(seconds: 1), _navigate);
});
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.bg,
body: SafeArea(
child: Column(
children: <Widget>[
HSpace(148),
AnimatedOpacity(
opacity: _launchLogo ? 1 : 0,
duration: const Duration(seconds: 3),
child: Assets.images.logo.image(width: 308.w, height: 100.h),
),
],
),
),
);
}
}