zeba_academy_security 1.0.2
zeba_academy_security: ^1.0.2 copied to clipboard
Advanced mobile security plugin for Flutter apps including root detection, emulator detection, screenshot blocking, SSL pinning, API encryption and tamper detection.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:zeba_academy_security/zeba_academy_security.dart';
void main() {
runApp(const ZebaSecurityApp());
}
class ZebaSecurityApp extends StatelessWidget {
const ZebaSecurityApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Zeba Academy Security",
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorSchemeSeed: Colors.indigo,
useMaterial3: true,
),
home: const SecurityHomePage(),
);
}
}
class SecurityHomePage extends StatefulWidget {
const SecurityHomePage({super.key});
@override
State<SecurityHomePage> createState() => _SecurityHomePageState();
}
class _SecurityHomePageState extends State<SecurityHomePage> {
bool? rooted;
bool? emulator;
@override
void initState() {
super.initState();
checkSecurity();
}
Future<void> checkSecurity() async {
bool r = await ZebaAcademySecurity.isDeviceRooted();
bool e = await ZebaAcademySecurity.isEmulator();
await ZebaAcademySecurity.blockScreenshots();
setState(() {
rooted = r;
emulator = e;
});
}
Widget buildSecurityCard(
String title,
bool? status,
IconData icon,
) {
if (status == null) {
return const Card(
child: Padding(
padding: EdgeInsets.all(20),
child: Center(child: CircularProgressIndicator()),
),
);
}
return Card(
elevation: 3,
child: ListTile(
leading: Icon(
icon,
size: 32,
color: status ? Colors.red : Colors.green,
),
title: Text(title,
style: const TextStyle(fontWeight: FontWeight.bold)),
subtitle: Text(
status ? "Detected" : "Safe",
style: TextStyle(
color: status ? Colors.red : Colors.green,
fontWeight: FontWeight.w600,
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Zeba Academy Security"),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
const SizedBox(height: 10),
const Icon(
Icons.security,
size: 80,
color: Colors.indigo,
),
const SizedBox(height: 10),
const Text(
"Device Security Check",
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 30),
buildSecurityCard(
"Root Detection",
rooted,
Icons.warning_amber,
),
const SizedBox(height: 12),
buildSecurityCard(
"Emulator Detection",
emulator,
Icons.phone_android,
),
const Spacer(),
ElevatedButton.icon(
onPressed: checkSecurity,
icon: const Icon(Icons.refresh),
label: const Text("Recheck Security"),
),
const SizedBox(height: 20)
],
),
),
);
}
}