Compare commits

...

28 Commits

Author SHA1 Message Date
747d17f27c 更新 .github/workflows/windows_test.yaml
Some checks failed
Windows Nightly Build / build (push) Failing after 29s
2024-10-02 21:18:45 +08:00
8398de5af1 更新 .github/workflows/windows_test.yaml 2024-10-02 21:16:03 +08:00
a42cb45534 添加 .github/workflows/windows_test.yaml 2024-10-02 21:15:01 +08:00
xkeyC
968a2a957b
Merge pull request #51 from StarCitizenToolBox/dependabot/pub/flutter_lints-5.0.0
build(deps): bump flutter_lints from 4.0.0 to 5.0.0
2024-09-30 09:13:20 +08:00
dependabot[bot]
3757c27939
build(deps): bump flutter_lints from 4.0.0 to 5.0.0
Bumps [flutter_lints](https://github.com/flutter/packages/tree/main/packages) from 4.0.0 to 5.0.0.
- [Release notes](https://github.com/flutter/packages/releases)
- [Commits](https://github.com/flutter/packages/commits/flutter_lints-v5.0.0/packages)

---
updated-dependencies:
- dependency-name: flutter_lints
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 00:49:29 +00:00
xkeyC
2a940b9312 Release: 2.12.2 56 2024-09-23 21:10:32 +08:00
xkeyC
2f17dba2fa bump: flutter_rust_bridge 2024-09-23 21:09:04 +08:00
xkeyC
6e1e50f34e
Merge pull request #50 from kerbcat-bot/weblate-sctoolbox-CoreApp
Translations update from 42Kit Translate
2024-09-23 21:05:46 +08:00
dependabot[bot]
bfc0c5d3d7 build(deps): update flutter_rust_bridge requirement in /rust
Updates the requirements on [flutter_rust_bridge](https://github.com/fzyzcjy/flutter_rust_bridge) to permit the latest version.
- [Release notes](https://github.com/fzyzcjy/flutter_rust_bridge/releases)
- [Changelog](https://github.com/fzyzcjy/flutter_rust_bridge/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fzyzcjy/flutter_rust_bridge/compare/v2.3.0...v2.4.0)

---
updated-dependencies:
- dependency-name: flutter_rust_bridge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 13:04:19 +00:00
xkeyC
8c6c980bb8 ui optimization 2024-09-23 21:03:45 +08:00
xkeyC
6a6360540b bugfix 2024-09-23 20:35:19 +08:00
xkeyC
d905f8c13e Release: 2.12.1 55 2024-09-11 20:55:57 +08:00
xkeyC
0d70cb711a Release: 2.12.1 55 2024-09-11 20:50:32 +08:00
xkeyC
f283f4db43 feat: hotfix channel support 2024-09-11 20:50:01 +08:00
xkeyC
3ce635075c feat: 启动游戏时不再隐藏浏览器弹窗,以解决长时间加载的问题 2024-09-11 20:48:25 +08:00
xkeyC
ffd32ec7ff fix: game path scan 2024-09-11 20:41:14 +08:00
xkeyC
ba102bbab8
Merge pull request #48 from StarCitizenToolBox/dependabot/pub/ffigen-14.0.0
build(deps): bump ffigen from 13.0.0 to 14.0.0
2024-09-09 09:04:00 +08:00
xkeyC
79d56dd267
Merge pull request #47 from StarCitizenToolBox/dependabot/pub/re_editor-0.4.0
build(deps): bump re_editor from 0.3.1 to 0.4.0
2024-09-09 09:03:53 +08:00
dependabot[bot]
134b4f0983
build(deps): bump ffigen from 13.0.0 to 14.0.0
Bumps [ffigen](https://github.com/dart-lang/native/tree/main/pkgs) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/dart-lang/native/releases)
- [Commits](https://github.com/dart-lang/native/commits/HEAD/pkgs)

---
updated-dependencies:
- dependency-name: ffigen
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 00:45:08 +00:00
dependabot[bot]
6090d772fe
build(deps): bump re_editor from 0.3.1 to 0.4.0
Bumps [re_editor](https://github.com/reqable/re-editor) from 0.3.1 to 0.4.0.
- [Changelog](https://github.com/reqable/re-editor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/reqable/re-editor/commits/v0.4.0)

---
updated-dependencies:
- dependency-name: re_editor
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 00:45:04 +00:00
xkeyC
3da318ec71 fix: l10n 2024-09-04 13:57:38 +08:00
xkeyC
f453821e15 bump: flutter_rust_bridge 2.3.0 2024-09-04 12:22:13 +08:00
xkeyC
de955f1226
Merge pull request #46 from StarCitizenToolBox/dependabot/cargo/rust/flutter_rust_bridge-eq-2.3.0
build(deps): update flutter_rust_bridge requirement from =2.2.0 to =2.3.0 in /rust
2024-08-22 09:34:22 +08:00
dependabot[bot]
636f5cdb53
build(deps): update flutter_rust_bridge requirement in /rust
Updates the requirements on [flutter_rust_bridge](https://github.com/fzyzcjy/flutter_rust_bridge) to permit the latest version.
- [Release notes](https://github.com/fzyzcjy/flutter_rust_bridge/releases)
- [Changelog](https://github.com/fzyzcjy/flutter_rust_bridge/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fzyzcjy/flutter_rust_bridge/compare/v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: flutter_rust_bridge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 01:02:26 +00:00
xkeyC
340e38a8e7
Merge pull request #44 from StarCitizenToolBox/dependabot/cargo/rust/flutter_rust_bridge-eq-2.2.0
build(deps): update flutter_rust_bridge requirement from =2.1.0 to =2.2.0 in /rust
2024-08-12 09:00:26 +08:00
xkeyC
f0a3b527cf
Merge pull request #45 from StarCitizenToolBox/dependabot/pub/window_manager-0.4.0
build(deps): bump window_manager from 0.3.9 to 0.4.0
2024-08-12 09:00:05 +08:00
dependabot[bot]
d1c7f2b72b
build(deps): bump window_manager from 0.3.9 to 0.4.0
Bumps [window_manager](https://github.com/leanflutter/window_manager) from 0.3.9 to 0.4.0.
- [Release notes](https://github.com/leanflutter/window_manager/releases)
- [Changelog](https://github.com/leanflutter/window_manager/blob/main/CHANGELOG.md)
- [Commits](https://github.com/leanflutter/window_manager/compare/v0.3.9...v0.4.0)

---
updated-dependencies:
- dependency-name: window_manager
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 00:25:46 +00:00
dependabot[bot]
e5d83aea04
build(deps): update flutter_rust_bridge requirement in /rust
Updates the requirements on [flutter_rust_bridge](https://github.com/fzyzcjy/flutter_rust_bridge) to permit the latest version.
- [Release notes](https://github.com/fzyzcjy/flutter_rust_bridge/releases)
- [Changelog](https://github.com/fzyzcjy/flutter_rust_bridge/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fzyzcjy/flutter_rust_bridge/compare/v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: flutter_rust_bridge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 00:13:16 +00:00
49 changed files with 408 additions and 213 deletions

71
.github/workflows/windows_test.yaml vendored Normal file
View File

@ -0,0 +1,71 @@
name: "Windows Nightly Build"
on:
schedule:
- cron: "19 21 * * *" # every day at midnight
workflow_dispatch:
jobs:
build:
runs-on: windows
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up MSbuild
uses: microsoft/setup-msbuild@v2
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' # optional, change this to force refresh cache
cache-path: '${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:' # optional, change this to specify the cache path
- run: flutter --version
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust Version
run: |
rustup --version
cargo --version
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
workspaces: "rust"
cache-all-crates: true
- name: Set up LLVM
uses: KyleMayes/install-llvm-action@v2
with:
version: "18"
- name: Flutter pub get
run: flutter pub get
- name: Flutter build runner
run: dart run build_runner build --delete-conflicting-outputs
- name: Rust cargo update
run: cargo update
working-directory: rust
- name: Set up Flutter rust bridge
run: |
cargo install cargo-expand
cargo install 'flutter_rust_bridge_codegen@^2.0.0-dev.0'
- name: Flutter Rust bridge generate
run: flutter_rust_bridge_codegen generate
- name: flutter gen l10n
run: |
flutter pub global activate intl_utils
flutter pub global run intl_utils:generate
- name: Flutter build Windows
run: flutter build windows
- name: Archive build
uses: actions/upload-artifact@v4
with:
name: windows
path: build/windows/x64/runner/Release

View File

@ -287,8 +287,7 @@ async function getRSILauncherToken(channelId) {
let libraryData = (await libraryR.json())["data"]
// get user avatar
let $avatarElement = $(".c-account-sidebar__profile-metas-avatar");
let avatarUrl = $avatarElement.css("background-image");
let avatarUrl = $(".a-avatarButton__image").attr("src");
//post message
window.chrome.webview.postMessage({

View File

@ -24,7 +24,9 @@ mixin _$AppGlobalState {
Locale? get appLocale => throw _privateConstructorUsedError;
Box<dynamic>? get appConfBox => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$AppGlobalStateCopyWith<AppGlobalState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -57,6 +59,8 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -100,6 +104,8 @@ class _$AppGlobalStateCopyWithImpl<$Res, $Val extends AppGlobalState>
) as $Val);
}
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$ThemeConfCopyWith<$Res> get themeConf {
@ -138,6 +144,8 @@ class __$$AppGlobalStateImplCopyWithImpl<$Res>
_$AppGlobalStateImpl _value, $Res Function(_$AppGlobalStateImpl) _then)
: super(_value, _then);
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -249,7 +257,9 @@ class _$AppGlobalStateImpl implements _AppGlobalState {
appLocale,
appConfBox);
@JsonKey(ignore: true)
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$AppGlobalStateImplCopyWith<_$AppGlobalStateImpl> get copyWith =>
@ -281,8 +291,11 @@ abstract class _AppGlobalState implements AppGlobalState {
Locale? get appLocale;
@override
Box<dynamic>? get appConfBox;
/// Create a copy of AppGlobalState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$AppGlobalStateImplCopyWith<_$AppGlobalStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}
@ -293,7 +306,9 @@ mixin _$ThemeConf {
Color get menuColor => throw _privateConstructorUsedError;
Color get micaColor => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of ThemeConf
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$ThemeConfCopyWith<ThemeConf> get copyWith =>
throw _privateConstructorUsedError;
}
@ -316,6 +331,8 @@ class _$ThemeConfCopyWithImpl<$Res, $Val extends ThemeConf>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of ThemeConf
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -359,6 +376,8 @@ class __$$ThemeConfImplCopyWithImpl<$Res>
_$ThemeConfImpl _value, $Res Function(_$ThemeConfImpl) _then)
: super(_value, _then);
/// Create a copy of ThemeConf
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -423,7 +442,9 @@ class _$ThemeConfImpl implements _ThemeConf {
int get hashCode =>
Object.hash(runtimeType, backgroundColor, menuColor, micaColor);
@JsonKey(ignore: true)
/// Create a copy of ThemeConf
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ThemeConfImplCopyWith<_$ThemeConfImpl> get copyWith =>
@ -442,8 +463,11 @@ abstract class _ThemeConf implements ThemeConf {
Color get menuColor;
@override
Color get micaColor;
/// Create a copy of ThemeConf
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ThemeConfImplCopyWith<_$ThemeConfImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -20,7 +20,7 @@ final routerProvider = AutoDisposeProvider<GoRouter>.internal(
);
typedef RouterRef = AutoDisposeProviderRef<GoRouter>;
String _$appGlobalModelHash() => r'9dccbb898714695ef8b640a5b5dfb361783a0f45';
String _$appGlobalModelHash() => r'cf3d526a61cbadea4252c6f8e096a527d5cef50f';
/// See also [AppGlobalModel].
@ProviderFor(AppGlobalModel)

View File

@ -1,8 +1,8 @@
class ConstConf {
static const String appVersion = "2.12.0";
static const int appVersionCode = 54;
static const String appVersion = "2.12.2";
static const int appVersionCode = 56;
static const String appVersionDate = "2024-6-28";
static const gameChannels = ["LIVE", "PTU", "EPTU", "TECH-PREVIEW"];
static const gameChannels = ["LIVE", "PTU", "EPTU", "TECH-PREVIEW", "HOTFIX"];
static const isMSE =
String.fromEnvironment("MSE", defaultValue: "false") == "true";
}

View File

@ -36,16 +36,7 @@ class SCLoggerHelper {
final jsonLogPath = await getLogFilePath();
if (jsonLogPath == null) throw "no file path";
var jsonString = utf8.decode(await File(jsonLogPath).readAsBytes());
if (jsonString.endsWith("\n")) {
jsonString = jsonString.substring(0, jsonString.length - 3);
}
if (jsonString.endsWith(" ")) {
jsonString = jsonString.substring(0, jsonString.length - 3);
}
if (jsonString.endsWith(",")) {
jsonString = jsonString.substring(0, jsonString.length - 3);
}
return json.decode("[$jsonString]");
return jsonString.split("\n");
} catch (e) {
dPrint(e);
return [];
@ -58,6 +49,8 @@ class SCLoggerHelper {
List<String> scInstallPaths = [];
checkAndAddPath(String path, bool checkExists) async {
// \\ \
path = path.replaceAll(RegExp(r'\\+'), "\\");
if (path.isNotEmpty && !scInstallPaths.contains(path)) {
if (!checkExists) {
dPrint("find installPath == $path");
@ -80,36 +73,27 @@ class SCLoggerHelper {
try {
for (var v in withVersion) {
String pattern =
r'([a-zA-Z]:\\\\[^\\\\]*\\\\[^\\\\]*\\\\StarCitizen\\\\' + v + r')';
RegExp regExp = RegExp(pattern, caseSensitive: false);
for (var i = listData.length - 1; i > 0; i--) {
final m = listData[i];
final info = m["[browser][info] "];
if (info is String) {
String installPath = "";
if (info.contains("Installing Star Citizen $v")) {
installPath = "${info.split(" at ")[1]}\\$v";
}
if (info.contains("Verifying Star Citizen $v")) {
installPath = "${info.split(" at ")[1]}\\$v";
}
if (info.contains("Launching Star Citizen $v from")) {
installPath = info
.replaceAll("Launching Star Citizen $v from (", "")
.replaceAll(")", "");
}
await checkAndAddPath(installPath, checkExists);
final line = listData[i];
final matches = regExp.allMatches(line);
for (var match in matches) {
await checkAndAddPath(match.group(0)!, checkExists);
}
}
}
if (scInstallPaths.isNotEmpty) {
//
if (scInstallPaths.isNotEmpty) {
//
for (var fileName in List.from(scInstallPaths)) {
for (var v in withVersion) {
for (var fileName in List.from(scInstallPaths)) {
if (fileName.toString().endsWith(v)) {
for (var nv in withVersion) {
final nextName =
"${fileName.toString().replaceAll("\\$v", "")}\\$nv";
await checkAndAddPath(nextName, true);
}
if (fileName.toString().endsWith(v)) {
for (var nv in withVersion) {
final nextName =
"${fileName.toString().replaceAll("\\$v", "")}\\$nv";
await checkAndAddPath(nextName, true);
}
}
}

View File

@ -8,8 +8,8 @@ class SystemHelper {
static initPowershellPath() async {
try {
var result = await Process.run(powershellPath, ["echo", "ping"]);
if (!result.stdout.toString().startsWith("ping") &&
var result = await Process.run(powershellPath, ["echo", "pong"]);
if (!result.stdout.toString().startsWith("pong") &&
powershellPath == "powershell.exe") {
throw "powershell check failed";
}

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
@ -35,6 +35,16 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
);
}
/// Initialize flutter_rust_bridge in mock mode.
/// No libraries for FFI are loaded.
static void initMock({
required RustLibApi api,
}) {
instance.initMockImpl(
api: api,
);
}
/// Dispose flutter_rust_bridge
///
/// The call to this function is optional, since flutter_rust_bridge (and everything else)
@ -57,7 +67,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
kDefaultExternalLibraryLoaderConfig;
@override
String get codegenVersion => '2.1.0';
String get codegenVersion => '2.4.0';
@override
int get rustContentHash => 1832496273;

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import

View File

@ -241,7 +241,7 @@ class MessageLookup extends MessageLookupByLibrary {
"app_splash_dialog_u_a_p_p": MessageLookupByLibrary.simpleMessage(
"User Agreement and Privacy Policy"),
"app_splash_dialog_u_a_p_p_content": MessageLookupByLibrary.simpleMessage(
"Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us."),
"Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us."),
"app_upgrade_action_next_time":
MessageLookupByLibrary.simpleMessage("Next time"),
"app_upgrade_action_update_now":
@ -719,8 +719,8 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_remove_incompatible_translation_params":
MessageLookupByLibrary.simpleMessage(
"Whether to remove incompatible Localization parameters"),
"localization_info_translation_status":
MessageLookupByLibrary.simpleMessage("Localization status"),
"localization_info_translation":
MessageLookupByLibrary.simpleMessage("Game localization"),
"localization_info_unavailable":
MessageLookupByLibrary.simpleMessage("Unavailable"),
"localization_info_update_time": m40,

View File

@ -646,8 +646,8 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_note": MessageLookupByLibrary.simpleMessage("备注:"),
"localization_info_remove_incompatible_translation_params":
MessageLookupByLibrary.simpleMessage("是否移除不兼容的汉化参数"),
"localization_info_translation_status":
MessageLookupByLibrary.simpleMessage("汉化状态"),
"localization_info_translation":
MessageLookupByLibrary.simpleMessage("游戏汉化"),
"localization_info_unavailable":
MessageLookupByLibrary.simpleMessage("不可用"),
"localization_info_update_time": m40,

View File

@ -649,8 +649,8 @@ class MessageLookup extends MessageLookupByLibrary {
"localization_info_note": MessageLookupByLibrary.simpleMessage("備註:"),
"localization_info_remove_incompatible_translation_params":
MessageLookupByLibrary.simpleMessage("是否移除不相容的翻譯參數"),
"localization_info_translation_status":
MessageLookupByLibrary.simpleMessage("翻譯狀態"),
"localization_info_translation":
MessageLookupByLibrary.simpleMessage("遊戲翻譯"),
"localization_info_unavailable":
MessageLookupByLibrary.simpleMessage("無法使用"),
"localization_info_update_time": m40,

View File

@ -1661,11 +1661,11 @@ class S {
);
}
/// `Localization status`
String get localization_info_translation_status {
/// `Game localization`
String get localization_info_translation {
return Intl.message(
'Localization status',
name: 'localization_info_translation_status',
'Game localization',
name: 'localization_info_translation',
desc: '',
args: [],
);
@ -3512,10 +3512,10 @@ class S {
);
}
/// `Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.`
/// `Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.`
String get app_splash_dialog_u_a_p_p_content {
return Intl.message(
'Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.',
'Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.',
name: 'app_splash_dialog_u_a_p_p_content',
desc: '',
args: [],

View File

@ -323,8 +323,8 @@
"@home_action_info_warning": {},
"localization_info_machine_translation_warning": "You are using the game built -in text. The official text is currently a machine translation (as of 3.21.0), and it is recommended that you install community Localization below.",
"@localization_info_machine_translation_warning": {},
"localization_info_translation_status": "Localization status",
"@localization_info_translation_status": {},
"localization_info_translation": "Game localization",
"@localization_info_translation": {},
"localization_info_enabled": "Enable ({v0}):",
"@localization_info_enabled": {},
"localization_info_installed_version": "The installed version: {v0}",
@ -693,7 +693,7 @@
"@app_common_loading_images": {},
"app_splash_dialog_u_a_p_p": "User Agreement and Privacy Policy",
"@app_splash_dialog_u_a_p_p": {},
"app_splash_dialog_u_a_p_p_content": "Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [github.com/starCitizentoolBox/app] (https://github.com/starCitizantoolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.",
"app_splash_dialog_u_a_p_p_content": "Thank you for choosing the SCToolBox box. We are committed to providing you with a safe, convenient and reliable experience. Before you start using your application, please read and agree to the following:\n\n 1. This application is an open source software under the GNU General Public License V3.0 protocol. You can use, modify, and distribute this software freely under the premise of obeying the agreement. Our source code is located at: [Github.com/StarCitizenToolBox/app](https://github.com/StarCitizenToolBox/app).\n2. The copyright of the Internet content in this application (including but not limited to localized documents, tool websites, news, videos, etc.) is created by its authors and is not part of GPL. Please use it under the corresponding authorization agreement.\n3. The official free release channels for this application are: [Microsoft App Store] (https://apps.microsoft.com/detail/9NF3SWFWNKL1) and [Official Website of Star Citizen Chinese] ), If you get from other third parties, please identify it carefully to avoid suffering from property losses.\n4. This application will send anonymous statistics to our server during use to improve software quality, and we will not collect any personal privacy information of your personal privacy.\n5. This application is supported by the community and has no direct connection with Cloud Imperium Games or other third -party commercial companies.\n6. We provide limited community support. If necessary, please go to the page to learn how to contact us.",
"@app_splash_dialog_u_a_p_p_content": {},
"tools_unp4k_msg_init": "Initialization ...",
"@tools_unp4k_msg_init": {},

View File

@ -322,8 +322,8 @@
"@home_action_info_warning": {},
"localization_info_machine_translation_warning": "您正在使用游戏内置文本官方文本目前为机器翻译截至3.21.0),建议您在下方安装社区汉化。",
"@localization_info_machine_translation_warning": {},
"localization_info_translation_status": "汉化状态",
"@localization_info_translation_status": {},
"localization_info_translation": "游戏汉化",
"@localization_info_translation": {},
"localization_info_enabled": "启用({v0}",
"@localization_info_enabled": {},
"localization_info_installed_version": "已安装版本:{v0}",

View File

@ -322,8 +322,8 @@
"@home_action_info_warning": {},
"localization_info_machine_translation_warning": "您目前正在使用遊戲內建翻譯文件,官方內建文件截止至 3.21.0 都是機器翻譯,建議安裝下方提供的社群翻譯或是來自其他來源的社群翻譯文件。",
"@localization_info_machine_translation_warning": {},
"localization_info_translation_status": "翻譯狀態",
"@localization_info_translation_status": {},
"localization_info_translation": "遊戲翻譯",
"@localization_info_translation": {},
"localization_info_enabled": "啟用({v0}",
"@localization_info_enabled": {},
"localization_info_installed_version": "已安裝:{v0}",

View File

@ -20,7 +20,9 @@ mixin _$Aria2cModelState {
Aria2c? get aria2c => throw _privateConstructorUsedError;
Aria2GlobalStat? get aria2globalStat => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of Aria2cModelState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$Aria2cModelStateCopyWith<Aria2cModelState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -45,6 +47,8 @@ class _$Aria2cModelStateCopyWithImpl<$Res, $Val extends Aria2cModelState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of Aria2cModelState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -89,6 +93,8 @@ class __$$Aria2cModelStateImplCopyWithImpl<$Res>
$Res Function(_$Aria2cModelStateImpl) _then)
: super(_value, _then);
/// Create a copy of Aria2cModelState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -159,7 +165,9 @@ class _$Aria2cModelStateImpl
int get hashCode =>
Object.hash(runtimeType, aria2cDir, aria2c, aria2globalStat);
@JsonKey(ignore: true)
/// Create a copy of Aria2cModelState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$Aria2cModelStateImplCopyWith<_$Aria2cModelStateImpl> get copyWith =>
@ -179,8 +187,11 @@ abstract class _Aria2cModelState implements Aria2cModelState {
Aria2c? get aria2c;
@override
Aria2GlobalStat? get aria2globalStat;
/// Create a copy of Aria2cModelState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$Aria2cModelStateImplCopyWith<_$Aria2cModelStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -26,7 +26,9 @@ mixin _$Unp4kcState {
throw _privateConstructorUsedError;
String get errorMessage => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of Unp4kcState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$Unp4kcStateCopyWith<Unp4kcState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -57,6 +59,8 @@ class _$Unp4kcStateCopyWithImpl<$Res, $Val extends Unp4kcState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of Unp4kcState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -127,6 +131,8 @@ class __$$Unp4kcStateImplCopyWithImpl<$Res>
_$Unp4kcStateImpl _value, $Res Function(_$Unp4kcStateImpl) _then)
: super(_value, _then);
/// Create a copy of Unp4kcState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -255,7 +261,9 @@ class _$Unp4kcStateImpl with DiagnosticableTreeMixin implements _Unp4kcState {
tempOpenFile,
errorMessage);
@JsonKey(ignore: true)
/// Create a copy of Unp4kcState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$Unp4kcStateImplCopyWith<_$Unp4kcStateImpl> get copyWith =>
@ -286,8 +294,11 @@ abstract class _Unp4kcState implements Unp4kcState {
MapEntry<String, String>? get tempOpenFile;
@override
String get errorMessage;
/// Create a copy of Unp4kcState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$Unp4kcStateImplCopyWith<_$Unp4kcStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -6,7 +6,7 @@ part of 'unp4kc.dart';
// RiverpodGenerator
// **************************************************************************
String _$unp4kCModelHash() => r'1fbd18cef164e6c2b40541b2d1d834f01095cd2b';
String _$unp4kCModelHash() => r'636da3fe20d1fa94917dd63934f08f8dbffc8a9d';
/// See also [Unp4kCModel].
@ProviderFor(Unp4kCModel)

View File

@ -63,10 +63,13 @@ class HomeGameLoginUIModel extends _$HomeGameLoginUIModel {
final webToken = data["webToken"];
final releaseInfo = data["releaseInfo"];
final libraryData = RsiGameLibraryData.fromJson(data["libraryData"]);
final avatarUrl = data["avatar"]
var avatarUrl = data["avatar"]
?.toString()
.replaceAll("url(\"", "")
.replaceAll("\")", "");
if (avatarUrl?.startsWith("/") ?? false) {
avatarUrl = "https://robertsspaceindustries.com$avatarUrl";
}
final Map<String, dynamic> payload = Jwt.parseJwt(authToken!);
final nickname = payload["nickname"] ?? "";

View File

@ -26,7 +26,9 @@ mixin _$HomeGameLoginState {
String? get installPath => throw _privateConstructorUsedError;
bool? get isDeviceSupportWinHello => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of HomeGameLoginState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$HomeGameLoginStateCopyWith<HomeGameLoginState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -59,6 +61,8 @@ class _$HomeGameLoginStateCopyWithImpl<$Res, $Val extends HomeGameLoginState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of HomeGameLoginState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -141,6 +145,8 @@ class __$$LoginStatusImplCopyWithImpl<$Res>
_$LoginStatusImpl _value, $Res Function(_$LoginStatusImpl) _then)
: super(_value, _then);
/// Create a copy of HomeGameLoginState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -281,7 +287,9 @@ class _$LoginStatusImpl implements _LoginStatus {
installPath,
isDeviceSupportWinHello);
@JsonKey(ignore: true)
/// Create a copy of HomeGameLoginState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$LoginStatusImplCopyWith<_$LoginStatusImpl> get copyWith =>
@ -318,8 +326,11 @@ abstract class _LoginStatus implements HomeGameLoginState {
String? get installPath;
@override
bool? get isDeviceSupportWinHello;
/// Create a copy of HomeGameLoginState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$LoginStatusImplCopyWith<_$LoginStatusImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -21,7 +21,9 @@ mixin _$HomeDownloaderUIState {
List<Aria2Task> get stoppedTasks => throw _privateConstructorUsedError;
Aria2GlobalStat? get globalStat => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of HomeDownloaderUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$HomeDownloaderUIStateCopyWith<HomeDownloaderUIState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -50,6 +52,8 @@ class _$HomeDownloaderUIStateCopyWithImpl<$Res,
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of HomeDownloaderUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -104,6 +108,8 @@ class __$$HomeDownloaderUIStateImplCopyWithImpl<$Res>
$Res Function(_$HomeDownloaderUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of HomeDownloaderUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -202,7 +208,9 @@ class _$HomeDownloaderUIStateImpl implements _HomeDownloaderUIState {
const DeepCollectionEquality().hash(_stoppedTasks),
globalStat);
@JsonKey(ignore: true)
/// Create a copy of HomeDownloaderUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$HomeDownloaderUIStateImplCopyWith<_$HomeDownloaderUIStateImpl>
@ -225,8 +233,11 @@ abstract class _HomeDownloaderUIState implements HomeDownloaderUIState {
List<Aria2Task> get stoppedTasks;
@override
Aria2GlobalStat? get globalStat;
/// Create a copy of HomeDownloaderUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$HomeDownloaderUIStateImplCopyWith<_$HomeDownloaderUIStateImpl>
get copyWith => throw _privateConstructorUsedError;
}

View File

@ -23,7 +23,9 @@ mixin _$HomeGameDoctorState {
List<MapEntry<String, String>>? get checkResult =>
throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of HomeGameDoctorState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$HomeGameDoctorStateCopyWith<HomeGameDoctorState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -52,6 +54,8 @@ class _$HomeGameDoctorStateCopyWithImpl<$Res, $Val extends HomeGameDoctorState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of HomeGameDoctorState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -110,6 +114,8 @@ class __$$HomeGameDoctorStateImplCopyWithImpl<$Res>
$Res Function(_$HomeGameDoctorStateImpl) _then)
: super(_value, _then);
/// Create a copy of HomeGameDoctorState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -208,7 +214,9 @@ class _$HomeGameDoctorStateImpl implements _HomeGameDoctorState {
isFixingString,
const DeepCollectionEquality().hash(_checkResult));
@JsonKey(ignore: true)
/// Create a copy of HomeGameDoctorState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$HomeGameDoctorStateImplCopyWith<_$HomeGameDoctorStateImpl> get copyWith =>
@ -235,8 +243,11 @@ abstract class _HomeGameDoctorState implements HomeGameDoctorState {
String get isFixingString;
@override
List<MapEntry<String, String>>? get checkResult;
/// Create a copy of HomeGameDoctorState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$HomeGameDoctorStateImplCopyWith<_$HomeGameDoctorStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -7,7 +7,7 @@ part of 'game_doctor_ui_model.dart';
// **************************************************************************
String _$homeGameDoctorUIModelHash() =>
r'137f6393bbbd76f3af0f7d0dd27d44d8473e42cc';
r'b69a19a937ca375214a7c7e73b8288f577265625';
/// See also [HomeGameDoctorUIModel].
@ProviderFor(HomeGameDoctorUIModel)

View File

@ -7,7 +7,6 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
import 'package:starcitizen_doctor/ui/tools/tools_ui_model.dart';
import 'package:starcitizen_doctor/widgets/widgets.dart';
import 'package:url_launcher/url_launcher_string.dart';
@ -168,15 +167,6 @@ class HomeUI extends HookConsumerWidget {
),
)),
const SizedBox(width: 12),
Button(
onPressed: () =>
SystemHelper.openDir("${homeState.scInstalledPath}"),
child: const Padding(
padding: EdgeInsets.all(6),
child: Icon(FluentIcons.folder_open),
),
),
const SizedBox(width: 12),
Button(
onPressed: model.reScanPath,
child: const Padding(

View File

@ -33,7 +33,9 @@ mixin _$HomeUIModelState {
throw _privateConstructorUsedError;
Map<String, bool> get isGameRunning => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of HomeUIModelState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$HomeUIModelStateCopyWith<HomeUIModelState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -70,6 +72,8 @@ class _$HomeUIModelStateCopyWithImpl<$Res, $Val extends HomeUIModelState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of HomeUIModelState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -176,6 +180,8 @@ class __$$HomeUIModelStateImplCopyWithImpl<$Res>
$Res Function(_$HomeUIModelStateImpl) _then)
: super(_value, _then);
/// Create a copy of HomeUIModelState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -407,7 +413,9 @@ class _$HomeUIModelStateImpl implements _HomeUIModelState {
const DeepCollectionEquality().hash(_countdownFestivalListData),
const DeepCollectionEquality().hash(_isGameRunning));
@JsonKey(ignore: true)
/// Create a copy of HomeUIModelState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$HomeUIModelStateImplCopyWith<_$HomeUIModelStateImpl> get copyWith =>
@ -457,8 +465,11 @@ abstract class _HomeUIModelState implements HomeUIModelState {
List<CountdownFestivalItemData>? get countdownFestivalListData;
@override
Map<String, bool> get isGameRunning;
/// Create a copy of HomeUIModelState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$HomeUIModelStateImplCopyWith<_$HomeUIModelStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -28,7 +28,9 @@ mixin _$AdvancedLocalizationUIState {
int get serverGlobalIniLines => throw _privateConstructorUsedError;
String get errorMessage => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of AdvancedLocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$AdvancedLocalizationUIStateCopyWith<AdvancedLocalizationUIState>
get copyWith => throw _privateConstructorUsedError;
}
@ -64,6 +66,8 @@ class _$AdvancedLocalizationUIStateCopyWithImpl<$Res,
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of AdvancedLocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -149,6 +153,8 @@ class __$$AdvancedLocalizationUIStateImplCopyWithImpl<$Res>
$Res Function(_$AdvancedLocalizationUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of AdvancedLocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -309,7 +315,9 @@ class _$AdvancedLocalizationUIStateImpl
serverGlobalIniLines,
errorMessage);
@JsonKey(ignore: true)
/// Create a copy of AdvancedLocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$AdvancedLocalizationUIStateImplCopyWith<_$AdvancedLocalizationUIStateImpl>
@ -348,8 +356,11 @@ abstract class _AdvancedLocalizationUIState
int get serverGlobalIniLines;
@override
String get errorMessage;
/// Create a copy of AdvancedLocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$AdvancedLocalizationUIStateImplCopyWith<_$AdvancedLocalizationUIStateImpl>
get copyWith => throw _privateConstructorUsedError;
}

View File

@ -7,7 +7,7 @@ part of 'advanced_localization_ui_model.dart';
// **************************************************************************
String _$advancedLocalizationUIModelHash() =>
r'096e175ecfef1defcb1dfcf657c7d0f6d4a164fa';
r'8241143c6dec93cd705e6b2e65cbca711cdfe2fb';
/// See also [AdvancedLocalizationUIModel].
@ProviderFor(AdvancedLocalizationUIModel)

View File

@ -77,8 +77,9 @@ class LocalizationDialogUI extends HookConsumerWidget {
}),
),
),
makeToolsListContainer(context, model, state),
makeListContainer(
S.current.localization_info_translation_status,
S.current.localization_info_translation,
[
if (state.patchStatus == null)
makeLoading(context)
@ -140,30 +141,41 @@ class LocalizationDialogUI extends HookConsumerWidget {
),
],
),
const SizedBox(height: 12),
Container(
color: Colors.white.withOpacity(.1),
height: 1,
),
const SizedBox(height: 12),
if (state.apiLocalizationData == null)
makeLoading(context)
else if (state.apiLocalizationData!.isEmpty)
Center(
child: Text(
S.current
.localization_info_no_translation_available,
style: TextStyle(
fontSize: 13,
color: Colors.white.withOpacity(.8)),
),
)
else
AlignedGridView.count(
crossAxisCount: 2,
crossAxisSpacing: 12,
mainAxisSpacing: 12,
itemBuilder: (BuildContext context, int index) {
final item = state.apiLocalizationData!.entries
.elementAt(index);
return makeRemoteList(context, model, item, state);
},
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: state.apiLocalizationData?.length ?? 0,
)
],
],
context),
makeListContainer(
S.current.localization_info_community_translation,
[
if (state.apiLocalizationData == null)
makeLoading(context)
else if (state.apiLocalizationData!.isEmpty)
Center(
child: Text(
S.current.localization_info_no_translation_available,
style: TextStyle(
fontSize: 13,
color: Colors.white.withOpacity(.8)),
),
)
else
for (final item in state.apiLocalizationData!.entries)
makeRemoteList(context, model, item, state),
],
context,
gridViewMode: true),
makeToolsListContainer(context, model, state),
],
),
),

View File

@ -297,7 +297,7 @@ class LocalizationUIModel extends _$LocalizationUIModel {
for (var value
in (element.rawContent?.readString() ?? "").split("\n")) {
final tv = value.trim();
if (tv.isNotEmpty) globalIni.writeln(tv);
if (tv.isNotEmpty) globalIni.writeln(value);
}
}
}

View File

@ -24,7 +24,9 @@ mixin _$LocalizationUIState {
bool? get isInstalledAdvanced => throw _privateConstructorUsedError;
List<String>? get customizeList => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of LocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$LocalizationUIStateCopyWith<LocalizationUIState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -54,6 +56,8 @@ class _$LocalizationUIStateCopyWithImpl<$Res, $Val extends LocalizationUIState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of LocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -118,6 +122,8 @@ class __$$LocalizationUIStateImplCopyWithImpl<$Res>
$Res Function(_$LocalizationUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of LocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -234,7 +240,9 @@ class _$LocalizationUIStateImpl implements _LocalizationUIState {
isInstalledAdvanced,
const DeepCollectionEquality().hash(_customizeList));
@JsonKey(ignore: true)
/// Create a copy of LocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$LocalizationUIStateImplCopyWith<_$LocalizationUIStateImpl> get copyWith =>
@ -263,8 +271,11 @@ abstract class _LocalizationUIState implements LocalizationUIState {
bool? get isInstalledAdvanced;
@override
List<String>? get customizeList;
/// Create a copy of LocalizationUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$LocalizationUIStateImplCopyWith<_$LocalizationUIStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -7,7 +7,7 @@ part of 'localization_ui_model.dart';
// **************************************************************************
String _$localizationUIModelHash() =>
r'6fec8805faaafb12e1409fcbb9b0b28d3c4730ce';
r'd08a3d100c72b3f1f4a6c96944d4a73bb3c21808';
/// See also [LocalizationUIModel].
@ProviderFor(LocalizationUIModel)

View File

@ -22,7 +22,9 @@ mixin _$HomePerformanceUIState {
throw _privateConstructorUsedError;
String get workingString => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of HomePerformanceUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$HomePerformanceUIStateCopyWith<HomePerformanceUIState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -51,6 +53,8 @@ class _$HomePerformanceUIStateCopyWithImpl<$Res,
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of HomePerformanceUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -106,6 +110,8 @@ class __$$HomePerformanceUIStateImplCopyWithImpl<$Res>
$Res Function(_$HomePerformanceUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of HomePerformanceUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -194,7 +200,9 @@ class _$HomePerformanceUIStateImpl implements _HomePerformanceUIState {
const DeepCollectionEquality().hash(_performanceMap),
workingString);
@JsonKey(ignore: true)
/// Create a copy of HomePerformanceUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$HomePerformanceUIStateImplCopyWith<_$HomePerformanceUIStateImpl>
@ -217,8 +225,11 @@ abstract class _HomePerformanceUIState implements HomePerformanceUIState {
Map<String, List<GamePerformanceData>>? get performanceMap;
@override
String get workingString;
/// Create a copy of HomePerformanceUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$HomePerformanceUIStateImplCopyWith<_$HomePerformanceUIStateImpl>
get copyWith => throw _privateConstructorUsedError;
}

View File

@ -92,8 +92,9 @@ class SettingsUIModel extends _$SettingsUIModel {
if (r == null || r.files.firstOrNull?.path == null) return;
final fileName = r.files.first.path!;
dPrint(fileName);
final fileNameRegExp =
RegExp(r"^(.*\\StarCitizen\\.*\\)Bin64\\StarCitizen\.exe$");
final fileNameRegExp = RegExp(
r"^(.*\\StarCitizen\\.*\\)Bin64\\StarCitizen\.exe$",
caseSensitive: false);
if (fileNameRegExp.hasMatch(fileName)) {
RegExp pathRegex = RegExp(r"\\[^\\]+\\Bin64\\StarCitizen\.exe$");
String extractedPath = fileName.replaceFirst(pathRegex, '');

View File

@ -22,7 +22,9 @@ mixin _$SettingsUIState {
String? get customGamePath => throw _privateConstructorUsedError;
int get locationCacheSize => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of SettingsUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$SettingsUIStateCopyWith<SettingsUIState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -51,6 +53,8 @@ class _$SettingsUIStateCopyWithImpl<$Res, $Val extends SettingsUIState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of SettingsUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -109,6 +113,8 @@ class __$$SettingsUIStateImplCopyWithImpl<$Res>
_$SettingsUIStateImpl _value, $Res Function(_$SettingsUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of SettingsUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -199,7 +205,9 @@ class _$SettingsUIStateImpl implements _SettingsUIState {
customGamePath,
locationCacheSize);
@JsonKey(ignore: true)
/// Create a copy of SettingsUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$SettingsUIStateImplCopyWith<_$SettingsUIStateImpl> get copyWith =>
@ -225,8 +233,11 @@ abstract class _SettingsUIState implements SettingsUIState {
String? get customGamePath;
@override
int get locationCacheSize;
/// Create a copy of SettingsUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$SettingsUIStateImplCopyWith<_$SettingsUIStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -23,7 +23,9 @@ mixin _$RSILauncherStateData {
String? get enabledLocalization => throw _privateConstructorUsedError;
bool? get enableDownloaderBoost => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of RSILauncherStateData
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$RSILauncherStateDataCopyWith<RSILauncherStateData> get copyWith =>
throw _privateConstructorUsedError;
}
@ -54,6 +56,8 @@ class _$RSILauncherStateDataCopyWithImpl<$Res,
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of RSILauncherStateData
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -118,6 +122,8 @@ class __$$RSILauncherStateDataImplCopyWithImpl<$Res>
$Res Function(_$RSILauncherStateDataImpl) _then)
: super(_value, _then);
/// Create a copy of RSILauncherStateData
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -208,7 +214,9 @@ class _$RSILauncherStateDataImpl implements _RSILauncherStateData {
int get hashCode => Object.hash(runtimeType, version, data, serverData,
isPatchInstalled, enabledLocalization, enableDownloaderBoost);
@JsonKey(ignore: true)
/// Create a copy of RSILauncherStateData
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$RSILauncherStateDataImplCopyWith<_$RSILauncherStateDataImpl>
@ -238,8 +246,11 @@ abstract class _RSILauncherStateData implements RSILauncherStateData {
String? get enabledLocalization;
@override
bool? get enableDownloaderBoost;
/// Create a copy of RSILauncherStateData
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$RSILauncherStateDataImplCopyWith<_$RSILauncherStateDataImpl>
get copyWith => throw _privateConstructorUsedError;
}

View File

@ -220,7 +220,14 @@ class ToolsUI extends HookConsumerWidget {
padding: EdgeInsets.all(6),
child: Icon(FluentIcons.folder_open),
),
onPressed: () => model.openDir(state.scInstalledPath))
onPressed: () {
if (state.scInstalledPath.trim().isEmpty) {
showToast(context,
S.current.tools_action_info_star_citizen_not_found);
return;
}
model.openDir(state.scInstalledPath);
})
],
);
}
@ -258,7 +265,16 @@ class ToolsUI extends HookConsumerWidget {
padding: EdgeInsets.all(6),
child: Icon(FluentIcons.folder_open),
),
onPressed: () => model.openDir(state.rsiLauncherInstalledPath))
onPressed: () {
if (state.scInstalledPath.trim().isEmpty) {
showToast(
context,
S.current
.tools_rsi_launcher_enhance_msg_error_launcher_notfound);
return;
}
model.openDir(state.rsiLauncherInstalledPath);
})
],
);
}

View File

@ -129,9 +129,6 @@ class ToolsUIModel extends _$ToolsUIModel {
items.add(await _addPhotographyCard(context));
state = state.copyWith(items: items);
if (!context.mounted) return;
items.addAll(await _addLogCard(context));
state = state.copyWith(items: items);
if (!context.mounted) return;
items.addAll(await _addNvmePatchCard(context));
state = state.copyWith(items: items, isItemLoading: false);
} catch (e) {
@ -140,26 +137,6 @@ class ToolsUIModel extends _$ToolsUIModel {
}
}
Future<List<ToolsItemData>> _addLogCard(BuildContext context) async {
double logPathLen = 0;
try {
logPathLen =
(await File(await SCLoggerHelper.getLogFilePath() ?? "").length()) /
1024 /
1024;
} catch (_) {}
return [
ToolsItemData(
"rsilauncher_log_fix",
S.current.tools_action_rsi_launcher_log_fix,
S.current.tools_action_info_rsi_launcher_log_issue(
logPathLen.toStringAsFixed(4)),
const Icon(FontAwesomeIcons.bookBible, size: 24),
onTap: () => _rsiLogFix(context),
),
];
}
Future<List<ToolsItemData>> _addNvmePatchCard(BuildContext context) async {
final nvmePatchStatus = await SystemHelper.checkNvmePatchStatus();
return [
@ -353,28 +330,6 @@ class ToolsUIModel extends _$ToolsUIModel {
SystemHelper.checkAndLaunchRSILauncher(state.rsiLauncherInstalledPath);
}
Future<void> _rsiLogFix(BuildContext context) async {
state = state.copyWith(working: true);
final path = await SCLoggerHelper.getLogFilePath();
if (!await File(path!).exists()) {
if (!context.mounted) return;
showToast(context, S.current.tools_action_info_log_file_not_exist);
return;
}
try {
SystemHelper.killRSILauncher();
await File(path).delete(recursive: true);
if (!context.mounted) return;
showToast(context, S.current.tools_action_info_cleanup_complete);
SystemHelper.checkAndLaunchRSILauncher(state.rsiLauncherInstalledPath);
} catch (_) {
if (!context.mounted) return;
showToast(context, S.current.tools_action_info_cleanup_failed(path));
}
state = state.copyWith(working: false);
}
openDir(path) async {
SystemHelper.openDir(path);
}

View File

@ -25,7 +25,9 @@ mixin _$ToolsUIState {
List<ToolsItemData> get items => throw _privateConstructorUsedError;
bool get isItemLoading => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
/// Create a copy of ToolsUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
$ToolsUIStateCopyWith<ToolsUIState> get copyWith =>
throw _privateConstructorUsedError;
}
@ -56,6 +58,8 @@ class _$ToolsUIStateCopyWithImpl<$Res, $Val extends ToolsUIState>
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of ToolsUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -126,6 +130,8 @@ class __$$ToolsUIStateImplCopyWithImpl<$Res>
_$ToolsUIStateImpl _value, $Res Function(_$ToolsUIStateImpl) _then)
: super(_value, _then);
/// Create a copy of ToolsUIState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
@ -262,7 +268,9 @@ class _$ToolsUIStateImpl implements _ToolsUIState {
const DeepCollectionEquality().hash(_items),
isItemLoading);
@JsonKey(ignore: true)
/// Create a copy of ToolsUIState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override
@pragma('vm:prefer-inline')
_$$ToolsUIStateImplCopyWith<_$ToolsUIStateImpl> get copyWith =>
@ -293,8 +301,11 @@ abstract class _ToolsUIState implements ToolsUIState {
List<ToolsItemData> get items;
@override
bool get isItemLoading;
/// Create a copy of ToolsUIState
/// with the given fields replaced by the non-null parameter values.
@override
@JsonKey(ignore: true)
@JsonKey(includeFromJson: false, includeToJson: false)
_$$ToolsUIStateImplCopyWith<_$ToolsUIStateImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -6,7 +6,7 @@ part of 'tools_ui_model.dart';
// RiverpodGenerator
// **************************************************************************
String _$toolsUIModelHash() => r'668c16bdd42448a4dd323fc84da8dc96641a0751';
String _$toolsUIModelHash() => r'b61ae444063db4c550fbf71e724eddd0f7104dc5';
/// See also [ToolsUIModel].
@ProviderFor(ToolsUIModel)

View File

@ -193,8 +193,6 @@ class WebViewModel {
webview.close();
}
});
Future.delayed(const Duration(seconds: 1))
.then((value) => {webview.setWebviewWindowVisibility(false)});
}
} catch (e) {
showToast(context, S.current.app_init_failed_with_reason(e));

View File

@ -18,7 +18,7 @@ dependencies:
hooks_riverpod: ^2.4.10
json_annotation: ^4.8.1
go_router: ^14.0.1
window_manager: ^0.3.9
window_manager: ^0.4.0
fluent_ui: ^4.8.6
flutter_staggered_grid_view: ^0.7.0
flutter_acrylic: ^1.1.4
@ -42,7 +42,7 @@ dependencies:
flutter_tilt: ^3.0.0
card_swiper: ^3.0.1
ffi: ^2.1.0
flutter_rust_bridge: ^2.1.0
flutter_rust_bridge: 2.4.0
freezed_annotation: ^2.4.1
meta: ^1.9.1
hexcolor: ^3.0.1
@ -61,7 +61,7 @@ dependencies:
synchronized: ^3.1.0+1
super_sliver_list: ^0.4.1
file: ^7.0.0
re_editor: ^0.3.0
re_editor: ^0.4.0
re_highlight: ^0.0.3
dependency_overrides:
http: ^1.1.2
@ -70,7 +70,7 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^4.0.0
flutter_lints: ^5.0.0
msix: ^3.16.4
build_runner: ^2.4.8
freezed: ^2.4.5
@ -78,7 +78,7 @@ dev_dependencies:
riverpod_generator: ^2.3.11
custom_lint: ^0.6.2
riverpod_lint: ^2.3.9
ffigen: ^13.0.0
ffigen: ^14.0.0
sct_dev_tools:
path: ./packages/sct_dev_tools
@ -100,7 +100,7 @@ msix_config:
publisher_display_name: xkeyC Studio
identity_name: 56575xkeyC.MSE
publisher: CN=B54C897B-C263-4680-B6AB-4913C603DF87
msix_version: 2.12.0.0
msix_version: 2.12.2.0
logo_path: ./assets/app_logo.png
capabilities: internetClient,allowElevation
languages: zh-cn

View File

@ -11,7 +11,7 @@ strip = "debuginfo"
crate-type = ["cdylib", "staticlib"]
[dependencies]
flutter_rust_bridge = "=2.1.0"
flutter_rust_bridge = "=2.4.0"
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "process"] }
futures = { version = "0.3", default-features = false, features = ["executor"] }
url = "2.5"

View File

@ -1,5 +1,5 @@
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
#![allow(
non_camel_case_types,
@ -36,7 +36,7 @@ flutter_rust_bridge::frb_generated_boilerplate!(
default_rust_opaque = RustOpaqueNom,
default_rust_auto_opaque = RustAutoOpaqueNom,
);
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.1.0";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.4.0";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1832496273;
// Section: executor
@ -1120,7 +1120,7 @@ impl SseEncode for () {
#[cfg(not(target_family = "wasm"))]
mod io {
// This file is automatically generated, so please do not edit it.
// Generated by `flutter_rust_bridge`@ 2.1.0.
// @generated by `flutter_rust_bridge`@ 2.4.0.
// Section: imports