import 'package:siro_rider/print.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; import '../../constant/box_name.dart'; import '../../main.dart'; class SecurityChecks { static const platform = MethodChannel( 'com.Siro.siro/security'); // Choose a unique channel name static Future isDeviceCompromised() async { try { final bool result = await platform .invokeMethod('isNativeRooted'); // Invoke the native method return result; } on PlatformException catch (e) { Log.print("Failed to check security status: ${e.message}"); return false; // Platform not supported → treat as secure (not compromised) } catch (e) { Log.print("Security check error: $e"); return false; } } static isDeviceRootedFromNative(BuildContext context) async { bool compromised = await isDeviceCompromised(); if (compromised) { showDialog( barrierDismissible: false, context: context, builder: (context) => AlertDialog( title: Text("Security Warning".tr), content: Text( "Your device appears to be compromised. The app will now close." .tr), actions: [ TextButton( onPressed: () { SystemNavigator.pop(); // Close the app }, child: Text("OK"), ), ], ), ); } else { // Continue with normal app flow box.write(BoxName.security_check, 'passed'); Log.print("Device is secure."); } } }