mirror of
https://github.com/Cateners/tiny_computer.git
synced 2026-05-20 16:35:47 +08:00
Change Page Structure
修改页面结构,为编写“控制”页面做准备
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"))
|
||||||
|
|||||||
24
pubspec.lock
24
pubspec.lock
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user