commit
1a38588ebd
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -2440,7 +2440,7 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "hwcodec"
|
name = "hwcodec"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/21pages/hwcodec#890204e0703a3d361fc7a45f035fe75c0575bb1d"
|
source = "git+https://github.com/21pages/hwcodec#1f03d203eca24dc976c21a47228f3bc31484c2bc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -5,6 +5,8 @@ import 'package:flutter/material.dart' hide MenuItem;
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_hbb/common.dart';
|
import 'package:flutter_hbb/common.dart';
|
||||||
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
||||||
|
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
||||||
|
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||||
import 'package:flutter_hbb/models/platform_model.dart';
|
import 'package:flutter_hbb/models/platform_model.dart';
|
||||||
import 'package:flutter_hbb/models/server_model.dart';
|
import 'package:flutter_hbb/models/server_model.dart';
|
||||||
import 'package:flutter_hbb/utils/multi_window_manager.dart';
|
import 'package:flutter_hbb/utils/multi_window_manager.dart';
|
||||||
@ -161,7 +163,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
|||||||
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
final textColor = Theme.of(context).textTheme.titleLarge?.color;
|
||||||
RxBool hover = false.obs;
|
RxBool hover = false.obs;
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () async {},
|
onTap: DesktopTabPage.onAddSetting,
|
||||||
child: Obx(
|
child: Obx(
|
||||||
() => CircleAvatar(
|
() => CircleAvatar(
|
||||||
radius: 15,
|
radius: 15,
|
||||||
@ -252,7 +254,7 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
|||||||
size: 22,
|
size: 22,
|
||||||
).marginOnly(right: 8, bottom: 2),
|
).marginOnly(right: 8, bottom: 2),
|
||||||
),
|
),
|
||||||
onTap: () => {},
|
onTap: () => DesktopSettingPage.switch2page(1),
|
||||||
onHover: (value) => editHover.value = value,
|
onHover: (value) => editHover.value = value,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_hbb/common.dart';
|
import 'package:flutter_hbb/common.dart';
|
||||||
import 'package:flutter_hbb/consts.dart';
|
import 'package:flutter_hbb/consts.dart';
|
||||||
import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
|
import 'package:flutter_hbb/desktop/pages/desktop_home_page.dart';
|
||||||
|
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||||
import 'package:flutter_hbb/models/platform_model.dart';
|
import 'package:flutter_hbb/models/platform_model.dart';
|
||||||
import 'package:flutter_hbb/models/server_model.dart';
|
import 'package:flutter_hbb/models/server_model.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@ -27,6 +28,8 @@ const double _kListViewBottomMargin = 15;
|
|||||||
const double _kTitleFontSize = 20;
|
const double _kTitleFontSize = 20;
|
||||||
const double _kContentFontSize = 15;
|
const double _kContentFontSize = 15;
|
||||||
const Color _accentColor = MyTheme.accent;
|
const Color _accentColor = MyTheme.accent;
|
||||||
|
const String _kSettingPageControllerTag = "settingPageController";
|
||||||
|
const String _kSettingPageIndexTag = "settingPageIndex";
|
||||||
|
|
||||||
class _TabInfo {
|
class _TabInfo {
|
||||||
late final String label;
|
late final String label;
|
||||||
@ -36,10 +39,30 @@ class _TabInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DesktopSettingPage extends StatefulWidget {
|
class DesktopSettingPage extends StatefulWidget {
|
||||||
const DesktopSettingPage({Key? key}) : super(key: key);
|
final int initialPage;
|
||||||
|
|
||||||
|
const DesktopSettingPage({Key? key, required this.initialPage})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<DesktopSettingPage> createState() => _DesktopSettingPageState();
|
State<DesktopSettingPage> createState() => _DesktopSettingPageState();
|
||||||
|
|
||||||
|
static void switch2page(int page) {
|
||||||
|
if (page >= 5) return;
|
||||||
|
try {
|
||||||
|
if (Get.isRegistered<PageController>(tag: _kSettingPageControllerTag)) {
|
||||||
|
DesktopTabPage.onAddSetting(initialPage: page);
|
||||||
|
PageController controller = Get.find(tag: _kSettingPageControllerTag);
|
||||||
|
RxInt selectedIndex = Get.find(tag: _kSettingPageIndexTag);
|
||||||
|
selectedIndex.value = page;
|
||||||
|
controller.jumpToPage(page);
|
||||||
|
} else {
|
||||||
|
DesktopTabPage.onAddSetting(initialPage: page);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('$e');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DesktopSettingPageState extends State<DesktopSettingPage>
|
class _DesktopSettingPageState extends State<DesktopSettingPage>
|
||||||
@ -54,7 +77,7 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
|
|||||||
];
|
];
|
||||||
|
|
||||||
late PageController controller;
|
late PageController controller;
|
||||||
RxInt selectedIndex = 0.obs;
|
late RxInt selectedIndex;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get wantKeepAlive => true;
|
bool get wantKeepAlive => true;
|
||||||
@ -62,7 +85,17 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
controller = PageController();
|
selectedIndex = (widget.initialPage < 5 ? widget.initialPage : 0).obs;
|
||||||
|
Get.put<RxInt>(selectedIndex, tag: _kSettingPageIndexTag);
|
||||||
|
controller = PageController(initialPage: widget.initialPage);
|
||||||
|
Get.put<PageController>(controller, tag: _kSettingPageControllerTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
Get.delete<PageController>(tag: _kSettingPageControllerTag);
|
||||||
|
Get.delete<RxInt>(tag: _kSettingPageIndexTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -14,6 +14,23 @@ class DesktopTabPage extends StatefulWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
State<DesktopTabPage> createState() => _DesktopTabPageState();
|
State<DesktopTabPage> createState() => _DesktopTabPageState();
|
||||||
|
|
||||||
|
static void onAddSetting({int initialPage = 0}) {
|
||||||
|
try {
|
||||||
|
DesktopTabController tabController = Get.find();
|
||||||
|
tabController.add(TabInfo(
|
||||||
|
key: kTabLabelSettingPage,
|
||||||
|
label: kTabLabelSettingPage,
|
||||||
|
selectedIcon: Icons.build_sharp,
|
||||||
|
unselectedIcon: Icons.build_outlined,
|
||||||
|
page: DesktopSettingPage(
|
||||||
|
key: const ValueKey(kTabLabelSettingPage),
|
||||||
|
initialPage: initialPage,
|
||||||
|
)));
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('$e');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DesktopTabPageState extends State<DesktopTabPage> {
|
class _DesktopTabPageState extends State<DesktopTabPage> {
|
||||||
@ -22,6 +39,7 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
Get.put<DesktopTabController>(tabController);
|
||||||
tabController.add(TabInfo(
|
tabController.add(TabInfo(
|
||||||
key: kTabLabelHomePage,
|
key: kTabLabelHomePage,
|
||||||
label: kTabLabelHomePage,
|
label: kTabLabelHomePage,
|
||||||
@ -33,6 +51,12 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
Get.delete<DesktopTabController>();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
RxBool fullscreen = false.obs;
|
RxBool fullscreen = false.obs;
|
||||||
@ -48,7 +72,7 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
tail: ActionIcon(
|
tail: ActionIcon(
|
||||||
message: 'Settings',
|
message: 'Settings',
|
||||||
icon: IconFont.menu,
|
icon: IconFont.menu,
|
||||||
onTap: onAddSetting,
|
onTap: DesktopTabPage.onAddSetting,
|
||||||
isClose: false,
|
isClose: false,
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
@ -62,13 +86,4 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
|
|||||||
fullscreen.value ? kFullScreenEdgeSize : kWindowEdgeSize,
|
fullscreen.value ? kFullScreenEdgeSize : kWindowEdgeSize,
|
||||||
child: tabWidget));
|
child: tabWidget));
|
||||||
}
|
}
|
||||||
|
|
||||||
void onAddSetting() {
|
|
||||||
tabController.add(TabInfo(
|
|
||||||
key: kTabLabelSettingPage,
|
|
||||||
label: kTabLabelSettingPage,
|
|
||||||
selectedIcon: Icons.build_sharp,
|
|
||||||
unselectedIcon: Icons.build_outlined,
|
|
||||||
page: DesktopSettingPage(key: const ValueKey(kTabLabelSettingPage))));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -243,8 +243,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: fee851fa43116e0b91c39acd0ec37063dc6015f8
|
ref: "1818097611168f6148317f4c527aa45ff29d5850"
|
||||||
resolved-ref: fee851fa43116e0b91c39acd0ec37063dc6015f8
|
resolved-ref: "1818097611168f6148317f4c527aa45ff29d5850"
|
||||||
url: "https://github.com/Kingtous/rustdesk_desktop_multi_window"
|
url: "https://github.com/Kingtous/rustdesk_desktop_multi_window"
|
||||||
source: git
|
source: git
|
||||||
version: "0.1.0"
|
version: "0.1.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user