Change Page Structure

修改页面结构,为编写“控制”页面做准备
This commit is contained in:
Caten
2023-09-03 23:16:00 +08:00
parent 363e0a1c2b
commit 76420edd8a
6 changed files with 70 additions and 62 deletions

View File

@@ -1,4 +1,4 @@
#org.gradle.jvmargs=-Xmx1536M #org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx8192m org.gradle.jvmargs=-Xmx12288m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true

View File

@@ -188,34 +188,11 @@ debian系统里预装了WPS, VSCode和fcitx输入法
} }
} }
class MyHomePage extends StatefulWidget { class LoadingPage extends StatelessWidget {
const MyHomePage({super.key, required this.title}); const LoadingPage({super.key});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return const Padding(
G.homePageStateContext = context;
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: FutureBuilder(
future: Workflow.workflow(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return TerminalView(G.terminal);
} else {
return const Padding(
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: Column( child: Column(
children: [ children: [
@@ -246,13 +223,65 @@ class _MyHomePageState extends State<MyHomePage> {
] ]
) )
); );
} }
} }
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
//安装完成了吗?
//完成后从加载界面切换到主界面
bool isLoadingComplete = false;
//主界面索引
int pageIndex = 0;
@override
Widget build(BuildContext context) {
G.homePageStateContext = context;
if (!isLoadingComplete) {
Workflow.workflow().then((value) {
setState(() {
isLoadingComplete = true;
});
});
}
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
), ),
floatingActionButton: FloatingActionButton( body: isLoadingComplete?TerminalView(G.terminal):const LoadingPage(),
onPressed: () => Workflow.launchBrowser(), bottomNavigationBar: Visibility(visible: isLoadingComplete,
tooltip: 'Increment', child: BottomNavigationBar(currentIndex: pageIndex,
child: const Icon(Icons.play_arrow), onTap: (index) {
setState(() {
pageIndex = index;
});
},
items: const [
BottomNavigationBarItem(icon: Icon(Icons.monitor), label: "终端"),
BottomNavigationBarItem(icon: Icon(Icons.video_settings), label: "控制"),
],
)
),
floatingActionButton: Visibility(visible: isLoadingComplete && (pageIndex == 0),
child: FloatingActionButton(
onPressed: () => Workflow.launchBrowser(),
tooltip: "进入图形界面",
child: const Icon(Icons.play_arrow),
),
), // This trailing comma makes auto-formatting nicer for build methods. ), // This trailing comma makes auto-formatting nicer for build methods.
); );
} }

View File

@@ -33,6 +33,8 @@ import 'package:flutter_pty/flutter_pty.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Util { class Util {
static bool isFirstTime() { static bool isFirstTime() {
return (! Directory("${G.dataPath}/bin").existsSync()) || File("${G.dataPath}/xao").existsSync(); return (! Directory("${G.dataPath}/bin").existsSync()) || File("${G.dataPath}/xao").existsSync();
@@ -70,6 +72,9 @@ class G {
static late WebViewController controller; static late WebViewController controller;
static late BuildContext homePageStateContext; static late BuildContext homePageStateContext;
static late SharedPreferences prefs;
static const String vncUrl = "http://localhost:36080/vnc.html?host=localhost&port=36080&autoconnect=true&resize=remote"; static const String vncUrl = "http://localhost:36080/vnc.html?host=localhost&port=36080&autoconnect=true&resize=remote";
} }
@@ -82,6 +87,7 @@ class Workflow {
static Future<void> initData() async { static Future<void> initData() async {
G.prefs = await SharedPreferences.getInstance();
} }

View File

@@ -5,13 +5,11 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import device_info_plus
import path_provider_foundation import path_provider_foundation
import shared_preferences_foundation import shared_preferences_foundation
import url_launcher_macos import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))

View File

@@ -49,22 +49,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.1" version: "3.1.1"
device_info_plus:
dependency: "direct main"
description:
name: device_info_plus
sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659"
url: "https://pub.dev"
source: hosted
version: "9.0.3"
device_info_plus_platform_interface:
dependency: transitive
description:
name: device_info_plus_platform_interface
sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64
url: "https://pub.dev"
source: hosted
version: "7.0.0"
equatable: equatable:
dependency: transitive dependency: transitive
description: description:
@@ -549,14 +533,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.0.7" version: "5.0.7"
win32_registry:
dependency: transitive
description:
name: win32_registry
sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9
url: "https://pub.dev"
source: hosted
version: "1.1.1"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:

View File

@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 1.0.1+1 version: 1.0.2+1
environment: environment:
sdk: '>=3.1.0 <4.0.0' sdk: '>=3.1.0 <4.0.0'
@@ -38,7 +38,6 @@ dependencies:
http: ^1.1.0 http: ^1.1.0
retry: ^3.1.2 retry: ^3.1.2
url_launcher: ^6.1.12 url_launcher: ^6.1.12
device_info_plus: ^9.0.3
shared_preferences: ^2.2.1 shared_preferences: ^2.2.1