Spaces:
Running
Running
| import 'package:flutter/material.dart'; | |
| import 'package:flutter/services.dart'; | |
| import 'keyboard/keyboard_layout.dart'; | |
| import 'onboarding/permission_flow.dart'; | |
| import 'services/scam_service.dart'; | |
| import 'theme/finanjo_theme.dart'; | |
| void main() { | |
| WidgetsFlutterBinding.ensureInitialized(); | |
| AccessibilityBridge.initialize(); | |
| runApp(const PremithiusApp()); | |
| } | |
| /// A specific entrypoint for the Android IME Service. | |
| /// The IME Service will call DartExecutor.DartEntrypoint(..., "keyboardMain") | |
| ('vm:entry-point') | |
| void keyboardMain() { | |
| runApp(const MaterialApp( | |
| debugShowCheckedModeBanner: false, | |
| home: PremithiusKeyboard(), | |
| )); | |
| } | |
| ('vm:entry-point') | |
| void scamMain() { | |
| // Headless execution for handling SMS analysis requests | |
| WidgetsFlutterBinding.ensureInitialized(); | |
| const channel = MethodChannel('in.inmodel.premithus/scam'); | |
| // Need to initialize ScamService without UI | |
| final scamService = ScamService(); | |
| scamService.init(); | |
| channel.setMethodCallHandler((call) async { | |
| if (call.method == 'analyze') { | |
| final String sender = call.arguments['sender'] ?? ''; | |
| final String messageBody = call.arguments['messageBody'] ?? ''; | |
| final result = await scamService.analyzeSms(sender, messageBody); | |
| return { | |
| 'isScam': result.isScam, | |
| 'category': result.category, | |
| 'confidence': result.confidence, | |
| 'threatLevel': result.threatLevel, | |
| 'triggeredLayer': result.triggeredLayer, | |
| 'layerLabel': result.layerLabel, | |
| }; | |
| } else if (call.method == 'feedback') { | |
| final String sender = call.arguments['sender'] ?? ''; | |
| final String messageBody = call.arguments['messageBody'] ?? ''; | |
| final bool isScam = call.arguments['isScam'] ?? false; | |
| await scamService.processFeedback(sender, messageBody, isScam); | |
| return null; | |
| } | |
| return null; | |
| }); | |
| } | |
| class PremithiusApp extends StatelessWidget { | |
| const PremithiusApp({Key? key}) : super(key: key); | |
| Widget build(BuildContext context) { | |
| return MaterialApp( | |
| title: 'Premithius', | |
| theme: FinanjoTheme.themeData, | |
| // Default to Permission Flow on first launch | |
| home: const PermissionFlow(), | |
| ); | |
| } | |
| } | |