added splash screen
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/routes/app_routes.dart';
|
||||
import 'package:tm_app/view_models/auth_view_model.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
|
||||
class DesktopSplashPage extends StatefulWidget {
|
||||
const DesktopSplashPage({super.key});
|
||||
|
||||
@override
|
||||
State<DesktopSplashPage> createState() => _DesktopSplashPageState();
|
||||
}
|
||||
|
||||
class _DesktopSplashPageState extends State<DesktopSplashPage> {
|
||||
late final AuthViewModel viewModel;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
viewModel = context.read<AuthViewModel>();
|
||||
Future.delayed(const Duration(seconds: 1), () async {
|
||||
await viewModel.checkIsLoggedIn();
|
||||
});
|
||||
viewModel.addListener(_viewModelListener);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
viewModel.removeListener(_viewModelListener);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.isLoggedIn) {
|
||||
Router.neglect(context, () => const HomeRouteData().go(context));
|
||||
} else {
|
||||
Router.neglect(context, () => const LoginScreenRoute().go(context));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Center(
|
||||
child: Image.asset(AssetsManager.logoBigPng, fit: BoxFit.cover),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/routes/app_routes.dart';
|
||||
import 'package:tm_app/view_models/auth_view_model.dart';
|
||||
|
||||
class MobileSplashPage extends StatefulWidget {
|
||||
const MobileSplashPage({super.key});
|
||||
|
||||
@override
|
||||
State<MobileSplashPage> createState() => _MobileSplashPageState();
|
||||
}
|
||||
|
||||
class _MobileSplashPageState extends State<MobileSplashPage> {
|
||||
late final AuthViewModel viewModel;
|
||||
@override
|
||||
void initState() {
|
||||
viewModel = context.read<AuthViewModel>();
|
||||
Future.delayed(const Duration(seconds: 1), () async {
|
||||
await viewModel.checkIsLoggedIn();
|
||||
});
|
||||
viewModel.addListener(_viewModelListener);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.isLoggedIn) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
Router.neglect(context, () => const HomeRouteData().go(context));
|
||||
});
|
||||
} else {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
Router.neglect(context, () => const LoginScreenRoute().go(context));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
viewModel.removeListener(_viewModelListener);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Center(
|
||||
child: Image.asset(AssetsManager.logoBigPng, fit: BoxFit.cover),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/views/shared/responsive_builder.dart';
|
||||
import 'package:tm_app/views/splash/pages/d_splash_page.dart';
|
||||
import 'package:tm_app/views/splash/pages/m_splash_page.dart';
|
||||
import 'package:tm_app/views/splash/pages/t_splash_page.dart';
|
||||
|
||||
class SplashScreen extends StatelessWidget {
|
||||
const SplashScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SizeConfig.init(context);
|
||||
return const ResponsiveBuilder(
|
||||
mobile: MobileSplashPage(),
|
||||
tablet: TabletSplashPage(),
|
||||
desktop: DesktopSplashPage(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/view_models/auth_view_model.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/routes/app_routes.dart';
|
||||
|
||||
class TabletSplashPage extends StatefulWidget {
|
||||
const TabletSplashPage({super.key});
|
||||
|
||||
@override
|
||||
State<TabletSplashPage> createState() => _TabletSplashPageState();
|
||||
}
|
||||
|
||||
class _TabletSplashPageState extends State<TabletSplashPage> {
|
||||
late final AuthViewModel viewModel;
|
||||
@override
|
||||
void initState() {
|
||||
viewModel = context.read<AuthViewModel>();
|
||||
Future.delayed(const Duration(seconds: 1), () async {
|
||||
await viewModel.checkIsLoggedIn();
|
||||
});
|
||||
viewModel.addListener(_viewModelListener);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void _viewModelListener() {
|
||||
if (viewModel.isLoggedIn) {
|
||||
Router.neglect(context, () => const HomeRouteData().go(context));
|
||||
} else {
|
||||
Router.neglect(context, () => const LoginScreenRoute().go(context));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
viewModel.removeListener(_viewModelListener);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Center(
|
||||
child: Image.asset(AssetsManager.logoBigPng, fit: BoxFit.cover),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user