prem / lib /main.dart
Nitishkumar-ai's picture
Deploy source code to Hugging Face without binaries
c25dcd7
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")
@pragma('vm:entry-point')
void keyboardMain() {
runApp(const MaterialApp(
debugShowCheckedModeBanner: false,
home: PremithiusKeyboard(),
));
}
@pragma('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);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Premithius',
theme: FinanjoTheme.themeData,
// Default to Permission Flow on first launch
home: const PermissionFlow(),
);
}
}