import 'dart:convert'; import 'dart:io'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/links.dart'; import 'package:SEFER/controller/functions/crud.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../constant/info.dart'; import '../../main.dart'; Future checkForUpdate(BuildContext context) async { final packageInfo = await PackageInfo.fromPlatform(); final currentVersion = packageInfo.buildNumber; final version = packageInfo.version; print('currentVersion is : $currentVersion'); // Fetch the latest version from your server String latestVersion = await getPackageInfo(); box.write(BoxName.packagInfo, version); if (latestVersion.isNotEmpty && latestVersion != currentVersion) { showUpdateDialog(context); } } Future getPackageInfo() async { final response = await CRUD().get(link: AppLink.packageInfo, payload: { "platform": Platform.isAndroid ? 'android' : 'ios', "appName": AppInformation.appVersion, }); if (response != 'failure') { return jsonDecode(response)['message'][0]['version']; } return ''; } void showUpdateDialog(BuildContext context) { final String storeUrl = Platform.isAndroid ? 'https://play.google.com/store/apps/details?id=com.sefer_driver' : 'https://apps.apple.com/ae/app/sefer-driver/id6502189302'; showCupertinoDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return CupertinoAlertDialog( title: Text('Update Available'.tr), content: Text( 'A new version of the app is available. Please update to the latest version.' .tr, ), actions: [ CupertinoDialogAction( child: Text('Update'.tr), onPressed: () async { if (await canLaunchUrl(Uri.parse(storeUrl))) { await launchUrl(Uri.parse(storeUrl)); } else { print('Could not launch $storeUrl'); } Navigator.of(context).pop(); }, ), ], ); }, ); }