Initial Commit

This commit is contained in:
ivan2282
2025-11-15 20:06:40 +03:00
commit 205d11df0d
233 changed files with 52572 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
import 'package:flutter/material.dart';
import 'package:gwid/screens/settings/session_spoofing_screen.dart';
import 'package:gwid/screens/settings/sessions_screen.dart';
import 'package:gwid/screens/settings/export_session_screen.dart';
import 'package:gwid/screens/settings/qr_login_screen.dart';
class SecuritySettingsScreen extends StatelessWidget {
const SecuritySettingsScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Безопасность")),
body: ListView(
padding: const EdgeInsets.all(16),
children: [
_buildSecurityOption(
context,
icon: Icons.qr_code_scanner_outlined,
title: "Вход по QR-коду",
subtitle: "Показать QR-код для входа на другом устройстве",
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => const QrLoginScreen()),
);
},
),
_buildSecurityOption(
context,
icon: Icons.history_toggle_off,
title: "Активные сессии",
subtitle: "Просмотр и управление активными сессиями",
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => const SessionsScreen()),
);
},
),
_buildSecurityOption(
context,
icon: Icons.upload_file_outlined,
title: "Экспорт сессии",
subtitle: "Сохранить данные сессии для переноса",
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const ExportSessionScreen(),
),
);
},
),
_buildSecurityOption(
context,
icon: Icons.devices_other_outlined,
title: "Подмена данных сессии",
subtitle: "Изменение User-Agent, версии ОС и т.д.",
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const SessionSpoofingScreen(),
),
);
},
),
],
),
);
}
Widget _buildSecurityOption(
BuildContext context, {
required IconData icon,
required String title,
required String subtitle,
required VoidCallback onTap,
}) {
return Card(
margin: const EdgeInsets.only(bottom: 10),
child: ListTile(
leading: Icon(icon),
title: Text(title),
subtitle: Text(subtitle),
trailing: const Icon(Icons.chevron_right_rounded),
onTap: onTap,
),
);
}
}