import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:generp/Models/VersionsResponse.dart'; import 'package:generp/Utils/SharedpreferencesService.dart'; import 'package:generp/screens/HomeScreen.dart'; import 'package:generp/screens/LoginScreen.dart'; import 'package:generp/screens/UpdatePasswordScreen.dart'; import 'package:package_info_plus/package_info_plus.dart'; import '../services/api_calling.dart'; class SplashVersionNotifier extends ChangeNotifier { VersionsResponse? versionsResponse; Map _packagedetails = {}; VersionsResponse? get versionDetails => versionsResponse; Map get packageDetails => _packagedetails; Future initPackageInfo() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); _packagedetails = { "Version": packageInfo.version, "App Name": packageInfo.appName, "Package Name": packageInfo.packageName, "Build Number": packageInfo.buildNumber, }; notifyListeners(); } Future handleVersionCheck(context) async { var loginStatus = await SharedpreferencesService().getInt("loginstatus"); try { final data = await ApiCalling.checkAppVersionApi(); if (data != null) { final int currentBuild = int.tryParse(_packagedetails["Build Number"] ?? "0") ?? 0; if (Platform.isAndroid && currentBuild < (data.latestVersionCode ?? 0)) { print("Update"); // AppUpdateDialouge(data.url!, data.releaseNotes!); } else if (Platform.isIOS && currentBuild < (data.iosLatestVersionCode ?? 0)) { print("Update"); // AppUpdateDialouge(data.iosUrl!, data.iosReleaseNotes!); } else { // Version is up to date if (loginStatus == 0) { Navigator.of( context, ).push(MaterialPageRoute(builder: (context) => LoginScreen())); } else { getSessiondetailsApiFunction( context, ); // make sure this is accessible } } notifyListeners(); } else { debugPrint("Version check returned null data."); } } catch (e) { debugPrint("Version check failed: $e"); } } Future getSessiondetailsApiFunction(context) async { var session = await SharedpreferencesService().getString("Session_id"); var empId = await SharedpreferencesService().getString("UserId"); try { final data = await ApiCalling.CheckSessionExistsApi(empId, session); if (data != null) { if (data.sessionExists == 1) { print("geos session"); if (data.updatePasswordRequired == 0) { Navigator.push( context, MaterialPageRoute(builder: (context) => MyHomePage()), ); } else if (data.updatePasswordRequired == 1) { Navigator.push( context, MaterialPageRoute(builder: (context) => UpdatepasswordScreen()), ); } } else { print("goes here"); Navigator.push( context, MaterialPageRoute(builder: (context) => LoginScreen()), ); // toast(context, // "Your Session has been expired, Please Login Again"); } notifyListeners(); } else { //toast(context,"Something went wrong, Please try again later!") } } on Error catch (e) { print(e.toString()); } } }