add test mode, update cm_test

This commit is contained in:
csf 2022-10-20 23:05:34 +09:00
parent bd68969dac
commit afa94d5907
3 changed files with 52 additions and 10 deletions

View File

@ -43,6 +43,9 @@ var version = "";
int androidVersion = 0; int androidVersion = 0;
DesktopType? desktopType; DesktopType? desktopType;
/// * debug or test only, DO NOT enable in release build
bool isTest = false;
typedef F = String Function(String); typedef F = String Function(String);
typedef FMethod = String Function(String, dynamic); typedef FMethod = String Function(String, dynamic);

View File

@ -92,6 +92,7 @@ class ServerModel with ChangeNotifier {
_serverId = IDTextEditingController(text: _emptyIdShow); _serverId = IDTextEditingController(text: _emptyIdShow);
Timer.periodic(Duration(seconds: 1), (timer) async { Timer.periodic(Duration(seconds: 1), (timer) async {
if (isTest) return timer.cancel();
var status = await bind.mainGetOnlineStatue(); var status = await bind.mainGetOnlineStatue();
if (status > 0) { if (status > 0) {
status = 1; status = 1;
@ -343,6 +344,7 @@ class ServerModel with ChangeNotifier {
// force // force
updateClientState([String? json]) async { updateClientState([String? json]) async {
if (isTest) return;
var res = await bind.cmGetClientsState(); var res = await bind.cmGetClientsState();
try { try {
final List clientsJson = jsonDecode(res); final List clientsJson = jsonDecode(res);

View File

@ -2,26 +2,63 @@ import 'package:flutter/material.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/server_page.dart'; import 'package:flutter_hbb/desktop/pages/server_page.dart';
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
import 'package:flutter_hbb/main.dart'; import 'package:flutter_hbb/main.dart';
import 'package:flutter_hbb/models/server_model.dart'; import 'package:flutter_hbb/models/server_model.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
final testClients = [
Client(0, false, false, "UserAAAAAA", "123123123", true, false, false),
Client(1, false, false, "UserBBBBB", "221123123", true, false, false),
Client(2, false, false, "UserC", "331123123", true, false, false),
Client(3, false, false, "UserDDDDDDDDDDDd", "441123123", true, false, false)
];
/// -t lib/cm_main.dart to test cm /// -t lib/cm_main.dart to test cm
void main(List<String> args) async { void main(List<String> args) async {
isTest = true;
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await windowManager.ensureInitialized(); await windowManager.ensureInitialized();
await windowManager.setSize(const Size(400, 600)); await windowManager.setSize(const Size(400, 600));
await windowManager.setAlignment(Alignment.topRight); await windowManager.setAlignment(Alignment.topRight);
await initEnv(kAppTypeMain); await initEnv(kAppTypeMain);
gFFI.serverModel.clients for (var client in testClients) {
.add(Client(0, false, false, "UserA", "123123123", true, false, false)); gFFI.serverModel.clients.add(client);
gFFI.serverModel.clients gFFI.serverModel.tabController.add(
.add(Client(1, false, false, "UserB", "221123123", true, false, false)); TabInfo(
gFFI.serverModel.clients key: client.id.toString(),
.add(Client(2, false, false, "UserC", "331123123", true, false, false)); label: client.name,
gFFI.serverModel.clients closable: false,
.add(Client(3, false, false, "UserD", "441123123", true, false, false)); page: buildConnectionCard(client)),
runApp(const GetMaterialApp( authorized: client.authorized);
debugShowCheckedModeBanner: false, home: DesktopServerPage())); }
runApp(GetMaterialApp(
debugShowCheckedModeBanner: false,
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.currentThemeMode(),
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: supportedLocales,
home: const DesktopServerPage()));
WindowOptions windowOptions =
getHiddenTitleBarWindowOptions(size: kConnectionManagerWindowSize);
windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
// ensure initial window size to be changed
await windowManager.setSize(kConnectionManagerWindowSize);
await Future.wait([
windowManager.setAlignment(Alignment.topRight),
windowManager.focus(),
windowManager.setOpacity(1)
]);
// ensure
windowManager.setAlignment(Alignment.topRight);
});
} }