import 'dart:convert'; import 'package:firebase_core/firebase_core.dart'; import 'package:flare_flutter/flare_actor.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/system_notification_model.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart'; import 'package:test_sa/new_views/pages/login_page.dart'; import '../../models/size_config.dart'; import '../../views/pages/user/land_page.dart' as old; class SplashPage extends StatefulWidget { static const String routeName = '/splash_page'; const SplashPage({Key key}) : super(key: key); @override State createState() => _SplashPageState(); } class _SplashPageState extends State { SettingProvider _settingProvider; UserProvider _userProvider; @override void initState() { Firebase.initializeApp(); NotificationManger.initialisation((notificationDetails) { // todo @sikander, check notifications payload, because notification model is different to need to check from backend // SystemNotificationModel notification = SystemNotificationModel.fromJson(json.decode(notificationDetails.payload)); // if (notification.path == null || notification.path.isEmpty) return; // Navigator.pushNamed(context, notification.path, arguments: notification.requestId); }, (id, title, body, payload) async {}); super.initState(); } @override Widget build(BuildContext context) { SizeConfig.init(context); _settingProvider = Provider.of(context, listen: false); _userProvider = Provider.of(context, listen: false); return Scaffold( body: SizedBox( width: MediaQuery.of(context).size.width / 1.1, child: FlareActor( "assets/rives/atoms_splash.flr", fit: BoxFit.contain, animation: "splash", callback: (animation) async { Navigator.of(context).pushNamedAndRemoveUntil(LoginPage.routeName, (routes) => true); if (_settingProvider.isLoaded && (_settingProvider.user?.isLiveToken ?? false)) { _userProvider.user = _settingProvider.user; Navigator.of(context).pushNamedAndRemoveUntil(LandPage.routeName, (routes) => true); /// The below line for the new design // Navigator.of(context).pushNamedAndRemoveUntil(LandPage.routeName, (routes) => true); } }, ), ).center, ); } }