device_safety_info 0.0.2 copy "device_safety_info: ^0.0.2" to clipboard
device_safety_info: ^0.0.2 copied to clipboard

Device Safety Info Flutter Plugin used for checking JailBreak, Rooted Device, Emulator/Simulator, External storage, VPN Detector, Application Update Checker and Screen Lock.

example/lib/main.dart

import 'dart:io';

import 'package:device_safety_info/device_safety_info.dart';
import 'package:device_safety_info/new_version_check.dart';
import 'package:device_safety_info/vpn_check.dart';
import 'package:device_safety_info/vpn_state.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool isRootedDevice = false;
  bool isScreenLock = false;
  bool isRealDevice = true;
  bool isExternalStorage = false;
  bool isDeveloperMode = false;
  final vpnCheck = VPNCheck();
  bool isVPN = false;

  @override
  void initState() {
    super.initState();
    initPlatformState();
    vpnStatus();
  }

  Future<void> initPlatformState() async {
    if (!mounted) return;
    try {
      isRootedDevice = await DeviceSafetyInfo.isRootedDevice;
      isScreenLock = await DeviceSafetyInfo.isScreenLock;
      isRealDevice = await DeviceSafetyInfo.isRealDevice;

      if(Platform.isAndroid){
        isExternalStorage = await DeviceSafetyInfo.isExternalStorage;
        isDeveloperMode = await DeviceSafetyInfo.isDeveloperMode;
      }

    } catch (error) {
      print(error);
    }

    setState(() {
      isRootedDevice = isRootedDevice;
      isScreenLock = isScreenLock;
      isRealDevice = isRealDevice;
      isExternalStorage = isExternalStorage;
      isDeveloperMode = isDeveloperMode;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Device Safety Info'),
        ),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: ListView(
              children: [
                infoTile(
                    methodRequest: 'isRootedDevice',
                    methodResponse: isRootedDevice),
                infoTile(
                    methodRequest: 'isScreenLock',
                    methodResponse: isScreenLock),
                infoTile(
                    methodRequest: 'isRealDevice',
                    methodResponse: isRealDevice),

                infoTile(
                    methodRequest: 'isExternalStorage',
                    methodResponse: isExternalStorage),
                infoTile(
                    methodRequest: 'isDeveloperMode',
                    methodResponse: isDeveloperMode),

                infoTile(
                    methodRequest: 'isVPN',
                    methodResponse: isVPN),

              ],
            ),
          ),
        ),
      ),
    );
  }

  infoTile({required String methodRequest, required bool methodResponse}) {
    if (kDebugMode) {
      print(methodResponse);
    }
    return Container(
      height: 60,
      width: MediaQuery.of(context).size.width,
      margin: const EdgeInsets.only(bottom: 10),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text(methodRequest),
          const SizedBox(
            width: 10,
          ),
          Text(
            methodResponse ? "Yes" : "No",
            style: const TextStyle(fontWeight: FontWeight.w600),
          ),
        ],
      ),
    );
  }

  vpnStatus(){
    vpnCheck.vpnState.listen((state) {
      if (state == VPNState.connectedState) {
        if (kDebugMode) {
          print("VPN connected.");
        }
        setState(() {
          isVPN = true;
        });
      } else {
        if (kDebugMode) {
          print("VPN disconnected.");
        }
        setState(() {
          isVPN = false;
        });
      }
    });
  }
  appVersionStatus(){

    final newVersion = NewVersionChecker(
      iOSId: '',
      androidId: '',
    );

    statusCheck(newVersion);
  }

  statusCheck(NewVersionChecker newVersion) async {
    try {
      final status = await newVersion.getVersionStatus();

      if (status != null) {
        debugPrint(status.appStoreLink);
        debugPrint(status.localVersion);
        debugPrint(status.storeVersion);
        debugPrint(status.canUpdate.toString());

        if (status.canUpdate) {
         // new version available
        }
      }
    } catch (e) {
      if (kDebugMode) {
        print(e.toString());
      }
    }
  }
}
17
likes
0
points
722
downloads

Publisher

unverified uploader

Weekly Downloads

Device Safety Info Flutter Plugin used for checking JailBreak, Rooted Device, Emulator/Simulator, External storage, VPN Detector, Application Update Checker and Screen Lock.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

connectivity_plus, flutter, http, package_info_plus, plugin_platform_interface

More

Packages that depend on device_safety_info