refactor main runApp()
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
411ce169f0
commit
c2d843ace6
@ -16,6 +16,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
import 'package:window_manager/window_manager.dart';
|
||||||
|
import 'package:bot_toast/bot_toast.dart';
|
||||||
|
|
||||||
// import 'package:window_manager/window_manager.dart';
|
// import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
@ -53,15 +54,27 @@ Future<void> main(List<String> args) async {
|
|||||||
switch (wType) {
|
switch (wType) {
|
||||||
case WindowType.RemoteDesktop:
|
case WindowType.RemoteDesktop:
|
||||||
desktopType = DesktopType.remote;
|
desktopType = DesktopType.remote;
|
||||||
runRemoteScreen(argument);
|
runMultiWindow(
|
||||||
|
argument,
|
||||||
|
kAppTypeDesktopRemote,
|
||||||
|
'RustDesk - Remote Desktop',
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case WindowType.FileTransfer:
|
case WindowType.FileTransfer:
|
||||||
desktopType = DesktopType.fileTransfer;
|
desktopType = DesktopType.fileTransfer;
|
||||||
runFileTransferScreen(argument);
|
runMultiWindow(
|
||||||
|
argument,
|
||||||
|
kAppTypeDesktopFileTransfer,
|
||||||
|
'RustDesk - File Transfer',
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
case WindowType.PortForward:
|
case WindowType.PortForward:
|
||||||
desktopType = DesktopType.portForward;
|
desktopType = DesktopType.portForward;
|
||||||
runPortForwardScreen(argument);
|
runMultiWindow(
|
||||||
|
argument,
|
||||||
|
kAppTypeDesktopPortForward,
|
||||||
|
'RustDesk - Port Forward',
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -120,84 +133,18 @@ void runMobileApp() async {
|
|||||||
runApp(App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
void runRemoteScreen(Map<String, dynamic> argument) async {
|
void runMultiWindow(
|
||||||
await initEnv(kAppTypeDesktopRemote);
|
Map<String, dynamic> argument,
|
||||||
runApp(RefreshWrapper(
|
String appType,
|
||||||
builder: (context) => GetMaterialApp(
|
String title,
|
||||||
navigatorKey: globalKey,
|
) async {
|
||||||
debugShowCheckedModeBanner: false,
|
await initEnv(appType);
|
||||||
title: 'RustDesk - Remote Desktop',
|
_runApp(
|
||||||
theme: MyTheme.lightTheme,
|
title,
|
||||||
darkTheme: MyTheme.darkTheme,
|
DesktopRemoteScreen(
|
||||||
themeMode: MyTheme.currentThemeMode(),
|
params: argument,
|
||||||
home: DesktopRemoteScreen(
|
|
||||||
params: argument,
|
|
||||||
),
|
|
||||||
localizationsDelegates: const [
|
|
||||||
GlobalMaterialLocalizations.delegate,
|
|
||||||
GlobalWidgetsLocalizations.delegate,
|
|
||||||
GlobalCupertinoLocalizations.delegate,
|
|
||||||
],
|
|
||||||
supportedLocales: supportedLocales,
|
|
||||||
navigatorObservers: const [
|
|
||||||
// FirebaseAnalyticsObserver(analytics: analytics),
|
|
||||||
],
|
|
||||||
builder: _keepScaleBuilder(),
|
|
||||||
),
|
),
|
||||||
));
|
MyTheme.currentThemeMode(),
|
||||||
}
|
|
||||||
|
|
||||||
void runFileTransferScreen(Map<String, dynamic> argument) async {
|
|
||||||
await initEnv(kAppTypeDesktopFileTransfer);
|
|
||||||
runApp(
|
|
||||||
RefreshWrapper(
|
|
||||||
builder: (context) => GetMaterialApp(
|
|
||||||
navigatorKey: globalKey,
|
|
||||||
debugShowCheckedModeBanner: false,
|
|
||||||
title: 'RustDesk - File Transfer',
|
|
||||||
theme: MyTheme.lightTheme,
|
|
||||||
darkTheme: MyTheme.darkTheme,
|
|
||||||
themeMode: MyTheme.currentThemeMode(),
|
|
||||||
home: DesktopFileTransferScreen(params: argument),
|
|
||||||
localizationsDelegates: const [
|
|
||||||
GlobalMaterialLocalizations.delegate,
|
|
||||||
GlobalWidgetsLocalizations.delegate,
|
|
||||||
GlobalCupertinoLocalizations.delegate,
|
|
||||||
],
|
|
||||||
supportedLocales: supportedLocales,
|
|
||||||
navigatorObservers: const [
|
|
||||||
// FirebaseAnalyticsObserver(analytics: analytics),
|
|
||||||
],
|
|
||||||
builder: _keepScaleBuilder(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void runPortForwardScreen(Map<String, dynamic> argument) async {
|
|
||||||
await initEnv(kAppTypeDesktopPortForward);
|
|
||||||
runApp(
|
|
||||||
RefreshWrapper(builder: (context) {
|
|
||||||
return GetMaterialApp(
|
|
||||||
navigatorKey: globalKey,
|
|
||||||
debugShowCheckedModeBanner: false,
|
|
||||||
title: 'RustDesk - Port Forward',
|
|
||||||
theme: MyTheme.lightTheme,
|
|
||||||
darkTheme: MyTheme.darkTheme,
|
|
||||||
themeMode: MyTheme.currentThemeMode(),
|
|
||||||
home: DesktopPortForwardScreen(params: argument),
|
|
||||||
localizationsDelegates: const [
|
|
||||||
GlobalMaterialLocalizations.delegate,
|
|
||||||
GlobalWidgetsLocalizations.delegate,
|
|
||||||
GlobalCupertinoLocalizations.delegate,
|
|
||||||
],
|
|
||||||
supportedLocales: supportedLocales,
|
|
||||||
navigatorObservers: const [
|
|
||||||
// FirebaseAnalyticsObserver(analytics: analytics),
|
|
||||||
],
|
|
||||||
builder: _keepScaleBuilder(),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,21 +153,11 @@ void runConnectionManagerScreen() async {
|
|||||||
// initialize window
|
// initialize window
|
||||||
WindowOptions windowOptions =
|
WindowOptions windowOptions =
|
||||||
getHiddenTitleBarWindowOptions(size: kConnectionManagerWindowSize);
|
getHiddenTitleBarWindowOptions(size: kConnectionManagerWindowSize);
|
||||||
runApp(RefreshWrapper(builder: (context) {
|
_runApp(
|
||||||
return GetMaterialApp(
|
'',
|
||||||
debugShowCheckedModeBanner: false,
|
const DesktopServerPage(),
|
||||||
theme: MyTheme.lightTheme,
|
MyTheme.currentThemeMode(),
|
||||||
darkTheme: MyTheme.darkTheme,
|
);
|
||||||
themeMode: MyTheme.currentThemeMode(),
|
|
||||||
localizationsDelegates: const [
|
|
||||||
GlobalMaterialLocalizations.delegate,
|
|
||||||
GlobalWidgetsLocalizations.delegate,
|
|
||||||
GlobalCupertinoLocalizations.delegate,
|
|
||||||
],
|
|
||||||
supportedLocales: supportedLocales,
|
|
||||||
home: const DesktopServerPage(),
|
|
||||||
builder: _keepScaleBuilder());
|
|
||||||
}));
|
|
||||||
windowManager.waitUntilReadyToShow(windowOptions, () async {
|
windowManager.waitUntilReadyToShow(windowOptions, () async {
|
||||||
await windowManager.show();
|
await windowManager.show();
|
||||||
// ensure initial window size to be changed
|
// ensure initial window size to be changed
|
||||||
@ -235,23 +172,44 @@ void runConnectionManagerScreen() async {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _runApp(
|
||||||
|
String title,
|
||||||
|
Widget home,
|
||||||
|
ThemeMode themeMode,
|
||||||
|
) {
|
||||||
|
final botToastBuilder = BotToastInit();
|
||||||
|
runApp(RefreshWrapper(
|
||||||
|
builder: (context) => GetMaterialApp(
|
||||||
|
navigatorKey: globalKey,
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
title: title,
|
||||||
|
theme: MyTheme.lightTheme,
|
||||||
|
darkTheme: MyTheme.darkTheme,
|
||||||
|
themeMode: themeMode,
|
||||||
|
home: home,
|
||||||
|
localizationsDelegates: const [
|
||||||
|
GlobalMaterialLocalizations.delegate,
|
||||||
|
GlobalWidgetsLocalizations.delegate,
|
||||||
|
GlobalCupertinoLocalizations.delegate,
|
||||||
|
],
|
||||||
|
supportedLocales: supportedLocales,
|
||||||
|
navigatorObservers: [
|
||||||
|
// FirebaseAnalyticsObserver(analytics: analytics),
|
||||||
|
BotToastNavigatorObserver(),
|
||||||
|
],
|
||||||
|
builder: (context, child) {
|
||||||
|
child = _keepScaleBuilder(context, child);
|
||||||
|
child = botToastBuilder(context, child);
|
||||||
|
return child;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
void runInstallPage() async {
|
void runInstallPage() async {
|
||||||
await windowManager.ensureInitialized();
|
await windowManager.ensureInitialized();
|
||||||
await initEnv(kAppTypeMain);
|
await initEnv(kAppTypeMain);
|
||||||
runApp(RefreshWrapper(
|
_runApp('', const InstallPage(), ThemeMode.light);
|
||||||
builder: (context) => GetMaterialApp(
|
|
||||||
debugShowCheckedModeBanner: false,
|
|
||||||
theme: MyTheme.lightTheme,
|
|
||||||
themeMode: ThemeMode.light,
|
|
||||||
localizationsDelegates: const [
|
|
||||||
GlobalMaterialLocalizations.delegate,
|
|
||||||
GlobalWidgetsLocalizations.delegate,
|
|
||||||
GlobalCupertinoLocalizations.delegate,
|
|
||||||
],
|
|
||||||
supportedLocales: supportedLocales,
|
|
||||||
home: const InstallPage(),
|
|
||||||
builder: _keepScaleBuilder()),
|
|
||||||
));
|
|
||||||
windowManager.waitUntilReadyToShow(
|
windowManager.waitUntilReadyToShow(
|
||||||
WindowOptions(size: Size(800, 600), center: true), () async {
|
WindowOptions(size: Size(800, 600), center: true), () async {
|
||||||
windowManager.show();
|
windowManager.show();
|
||||||
@ -303,6 +261,7 @@ class _AppState extends State<App> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// final analytics = FirebaseAnalytics.instance;
|
// final analytics = FirebaseAnalytics.instance;
|
||||||
|
final botToastBuilder = BotToastInit();
|
||||||
return RefreshWrapper(builder: (context) {
|
return RefreshWrapper(builder: (context) {
|
||||||
return MultiProvider(
|
return MultiProvider(
|
||||||
providers: [
|
providers: [
|
||||||
@ -325,15 +284,16 @@ class _AppState extends State<App> {
|
|||||||
: !isAndroid
|
: !isAndroid
|
||||||
? WebHomePage()
|
? WebHomePage()
|
||||||
: HomePage(),
|
: HomePage(),
|
||||||
navigatorObservers: const [
|
|
||||||
// FirebaseAnalyticsObserver(analytics: analytics),
|
|
||||||
],
|
|
||||||
localizationsDelegates: const [
|
localizationsDelegates: const [
|
||||||
GlobalMaterialLocalizations.delegate,
|
GlobalMaterialLocalizations.delegate,
|
||||||
GlobalWidgetsLocalizations.delegate,
|
GlobalWidgetsLocalizations.delegate,
|
||||||
GlobalCupertinoLocalizations.delegate,
|
GlobalCupertinoLocalizations.delegate,
|
||||||
],
|
],
|
||||||
supportedLocales: supportedLocales,
|
supportedLocales: supportedLocales,
|
||||||
|
navigatorObservers: [
|
||||||
|
// FirebaseAnalyticsObserver(analytics: analytics),
|
||||||
|
BotToastNavigatorObserver(),
|
||||||
|
],
|
||||||
builder: isAndroid
|
builder: isAndroid
|
||||||
? (context, child) => AccessibilityListener(
|
? (context, child) => AccessibilityListener(
|
||||||
child: MediaQuery(
|
child: MediaQuery(
|
||||||
@ -343,22 +303,24 @@ class _AppState extends State<App> {
|
|||||||
child: child ?? Container(),
|
child: child ?? Container(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: _keepScaleBuilder(),
|
: (context, child) {
|
||||||
|
child = _keepScaleBuilder(context, child);
|
||||||
|
child = botToastBuilder(context, child);
|
||||||
|
return child;
|
||||||
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_keepScaleBuilder() {
|
Widget _keepScaleBuilder(BuildContext context, Widget? child) {
|
||||||
return (BuildContext context, Widget? child) {
|
return MediaQuery(
|
||||||
return MediaQuery(
|
data: MediaQuery.of(context).copyWith(
|
||||||
data: MediaQuery.of(context).copyWith(
|
textScaleFactor: 1.0,
|
||||||
textScaleFactor: 1.0,
|
),
|
||||||
),
|
child: child ?? Container(),
|
||||||
child: child ?? Container(),
|
);
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_registerEventHandler() {
|
_registerEventHandler() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
import 'dart:ui' as ui;
|
||||||
|
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@ -11,7 +12,6 @@ import '../../models/platform_model.dart';
|
|||||||
import '../common.dart';
|
import '../common.dart';
|
||||||
import '../consts.dart';
|
import '../consts.dart';
|
||||||
import './state_model.dart';
|
import './state_model.dart';
|
||||||
import 'dart:ui' as ui;
|
|
||||||
|
|
||||||
/// Mouse button enum.
|
/// Mouse button enum.
|
||||||
enum MouseButtons { left, right, wheel }
|
enum MouseButtons { left, right, wheel }
|
||||||
|
@ -102,6 +102,7 @@ dependencies:
|
|||||||
ref: 5be5113d59c753989dbf1106241379e3fd4c9b18
|
ref: 5be5113d59c753989dbf1106241379e3fd4c9b18
|
||||||
path: ^1.8.1
|
path: ^1.8.1
|
||||||
auto_size_text: ^3.0.0
|
auto_size_text: ^3.0.0
|
||||||
|
bot_toast: ^4.0.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
icons_launcher: ^2.0.4
|
icons_launcher: ^2.0.4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user