CH-J SM Mobileإدارة الخوادم عبر SSH
القائمة
المصدر المنشور

CH-J SM Mobile

تصفّح الأدلة والملفات الخاصة بإصدار محدد من التطبيق.

تنزيل الشيفرة المصدرية بصيغة ZIP
CH-J / SM Mobile 175 ملفات
sm-mobile-20261016T185235Z-8e93ecc1b59a تاريخ الإضافة: · تاريخ البناء:
main.dart تاريخ الإضافة: لم يُسجَّل التاريخ ٣٫٠ KB · 91 أسطر
الشيفرة تنزيل الملف
1import 'dart:async';
2import 'package:flutter/material.dart';
3import 'core/app_controller.dart';
4import 'l10n/strings.dart';
5import 'services/blob_store.dart';
6import 'services/secure_store.dart';
7import 'services/local_files.dart';
8import 'ui/adaptive.dart';
9import 'ui/gates.dart';
10import 'ui/theme.dart';
11import 'ui/workspace.dart';
13void main() {
14 WidgetsFlutterBinding.ensureInitialized();
15 unawaited(purgeTransferCache().catchError((Object _) {}));
16 final controller = AppController(DeviceStore.normal, blobs: FileBlobStore());
17 runApp(SmMobileApp(controller));
18 controller.initialize();
21class SmMobileApp extends StatefulWidget {
22 final AppController controller;
23 const SmMobileApp(this.controller, {super.key});
24 @override
25 State<SmMobileApp> createState() => _SmMobileAppState();
28class _SmMobileAppState extends State<SmMobileApp> {
29 final navigator = GlobalKey<NavigatorState>();
30 @override
31 void initState() {
32 super.initState();
33 widget.controller.onLocked = () {
34 unawaited(purgeTransferCache().catchError((Object _) {}));
35 navigator.currentState?.popUntil((r) => r.isFirst);
36 };
37 }
39 @override
40 Widget build(BuildContext context) => ListenableBuilder(
41 listenable: widget.controller,
42 builder: (_, _) {
43 final c = widget.controller;
44 return MaterialApp(
45 navigatorKey: navigator,
46 title: 'SM Mobile',
47 debugShowCheckedModeBanner: false,
48 locale: c.locale,
49 supportedLocales: AppLocalizations.supportedLocales,
50 localizationsDelegates: AppLocalizations.localizationsDelegates,
51 theme: buildTheme(Brightness.light),
52 darkTheme: buildTheme(Brightness.dark),
53 themeMode: c.theme,
54 builder: (context, child) => Listener(
55 onPointerDown: (_) => c.activity(),
56 onPointerMove: (_) => c.activity(),
57 // iOS and Android keep the keyboard open after a tap outside a
58 // text field; a tap on empty space closes it. Taps on buttons,
59 // fields and the terminal are won by their own recognizers.
60 child: GestureDetector(
61 behavior: HitTestBehavior.translucent,
62 // Not an action for screen readers, only a touch convenience.
63 excludeFromSemantics: true,
64 onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
65 child: MinimumCanvas(child: child!),
66 ),
67 ),
68 home: !c.ready
69 ? const Scaffold(body: Center(child: CircularProgressIndicator()))
70 : c.startupError != null
71 ? Builder(
72 builder: (context) => Scaffold(
73 body: SafeArea(
74 child: Center(
75 child: Padding(
76 padding: const EdgeInsets.all(24),
77 child: Text(context.tr(c.startupError!)),
78 ),
79 ),
80 ),
81 ),
82 )
83 : !c.accepted
84 ? Onboarding(c)
85 : !c.vault.unlocked
86 ? VaultGate(c)
87 : Workspace(c),
88 );
89 },
90 );
SHA-2566c9fcd28364fc9627b6a5e77537285ea51178af95216a64998215bee8d7f1993

CH-J Proprietary Software License 1.14 · تُتاح الشيفرة المصدرية بموجب CH-J Proprietary Software License 1.14. وإتاحتها لا تغيّر شروط الترخيص ولا تمنح حقوقًا إضافية.

SHA-256 للأرشيف46e427a43e87af091004f36145590bda8fe90086dfb0f631afeb5029fb0b5655
الملفات