app/lib/ui/index_ui_model.dart

91 lines
2.5 KiB
Dart
Raw Normal View History

2023-10-09 09:32:07 +08:00
import 'dart:io';
2023-10-30 20:39:31 +08:00
import 'package:starcitizen_doctor/api/analytics.dart';
2023-10-09 09:32:07 +08:00
import 'package:starcitizen_doctor/base/ui_model.dart';
2023-11-07 22:35:25 +08:00
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
2023-10-09 09:32:07 +08:00
import 'package:starcitizen_doctor/global_ui_model.dart';
import 'package:starcitizen_doctor/ui/about/about_ui_model.dart';
import 'package:starcitizen_doctor/ui/home/home_ui_model.dart';
import 'package:starcitizen_doctor/ui/settings/settings_ui_model.dart';
import 'package:starcitizen_doctor/ui/tools/tools_ui_model.dart';
import 'package:url_launcher/url_launcher_string.dart';
2024-01-07 14:57:49 +08:00
import 'party_room/party_room_home_ui_model.dart';
2023-10-09 09:32:07 +08:00
class IndexUIModel extends BaseUIModel {
int curIndex = 0;
@override
void initModel() {
_checkRunTime();
Future.delayed(const Duration(milliseconds: 300))
2023-11-11 01:18:30 +08:00
.then((value) => globalUIModel.doCheckUpdate(context!));
2023-10-09 09:32:07 +08:00
super.initModel();
}
@override
BaseUIModel? onCreateChildUIModel(modelKey) {
switch (modelKey) {
case "home":
return HomeUIModel();
case "tools":
return ToolsUIModel();
case "settings":
return SettingUIModel();
case "about":
return AboutUIModel();
2024-01-07 14:57:49 +08:00
case "party":
return PartyRoomHomeUIModel();
2023-10-09 09:32:07 +08:00
}
return null;
}
void onIndexMenuTap(String value) {
final index = {
"首页": 0,
2024-01-07 14:57:49 +08:00
"大厅": 1,
"工具": 2,
"设置": 3,
"关于": 4,
2023-10-09 09:32:07 +08:00
};
curIndex = index[value] ?? 0;
switch (curIndex) {
case 0:
getCreatedChildUIModel("home")?.reloadData();
break;
case 1:
2024-01-07 14:57:49 +08:00
getCreatedChildUIModel("party")?.reloadData();
2023-10-09 09:32:07 +08:00
break;
2023-12-06 20:49:14 +08:00
case 2:
2024-01-07 14:57:49 +08:00
getCreatedChildUIModel("tools")?.reloadData();
break;
case 3:
2023-12-06 20:49:14 +08:00
getCreatedChildUIModel("settings")?.reloadData();
break;
2023-10-09 09:32:07 +08:00
}
notifyListeners();
}
Future<void> _checkRunTime() async {
Future<void> onError() async {
await showToast(context!, "运行环境出错,请检查系统环境变量 PATH");
await launchUrlString(
"https://answers.microsoft.com/zh-hans/windows/forum/all/%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98/b88369e6-2620-4a77-b07a-d0af50894a07");
2023-10-30 20:39:31 +08:00
await AnalyticsApi.touch("error_powershell");
2023-10-09 09:32:07 +08:00
exit(0);
}
try {
2023-12-06 20:49:14 +08:00
var result =
await Process.run(SystemHelper.powershellPath, ["echo", "ping"]);
2023-10-09 09:32:07 +08:00
if (result.stdout.toString().startsWith("ping")) {
dPrint("powershell check pass");
} else {
onError();
}
} catch (e) {
onError();
}
}
}