You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/unsafe_device.dart

118 lines
3.9 KiB
Dart

import 'package:doctor_app_flutter/core/service/security_service.dart';
import 'package:flutter/material.dart';
import 'package:freerasp/freerasp.dart';
import 'package:http/http.dart' as getIt;
import 'locator.dart';
class UnsafeDevice extends StatefulWidget {
const UnsafeDevice({super.key});
@override
State<UnsafeDevice> createState() => _UnsafeDeviceState();
}
class _UnsafeDeviceState extends State<UnsafeDevice> {
@override
void initState() {
Talsec.instance.detachListener();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 24),
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Logo
Center(
child: Image.asset('assets/images/dr_app_logo.png'),
),
SizedBox(height: 32),
// Warning Icon
Icon(
Icons.security,
size: 80,
color: Color(0xFFED1C2B),
),
SizedBox(height: 24),
// Title
Text(
'Unsafe Device Detected',
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Color(0xFFED1C2B),
),
textAlign: TextAlign.center,
),
SizedBox(height: 16),
// Description
Text(
'For your security, this app cannot run on devices with security vulnerabilities. is ssss',
style: TextStyle(
fontSize: 16,
color: Colors.black87,
),
textAlign: TextAlign.center,
),
SizedBox(height: 24),
if (locator.get<SecurityService>().detectedThreats.isNotEmpty) ...[
Text(
'Detected Issues:',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
color: Colors.black87,
),
),
SizedBox(height: 8),
Container(
padding: EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
borderRadius: BorderRadius.circular(8),
border: Border.all(color: Colors.red.withOpacity(0.3)),
),
child: Column(
children: locator
.get<SecurityService>()
.detectedThreats
.where((t) => t.severity == ThreatSeverity.critical)
.take(5) // Show max 5 threats
.map((threat) => Padding(
padding: EdgeInsets.symmetric(vertical: 4),
child: Row(
children: [
Icon(Icons.error_outline, size: 16, color: Colors.red),
SizedBox(width: 8),
Expanded(
child: Text(
threat.threatType,
style: TextStyle(fontSize: 12),
),
),
],
),
))
.toList(),
),
),
SizedBox(height: 24),
],
],
),
),
),
);
}
}