diff --git a/lib/common/widgets/dialog/export_import.dart b/lib/common/widgets/dialog/export_import.dart index 14eca825f..26deeb8a0 100644 --- a/lib/common/widgets/dialog/export_import.dart +++ b/lib/common/widgets/dialog/export_import.dart @@ -1,6 +1,5 @@ import 'dart:async' show FutureOr; import 'dart:convert' show utf8, jsonDecode; -import 'dart:io' show File; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; @@ -122,8 +121,7 @@ Future importFromLocalFile({ allowedExtensions: const ['json', 'txt'], ); if (result != null) { - final path = result.xFile.path; - final data = await File(path).readAsString(); + final data = await result.xFile.readAsString(); final T json; try { json = jsonDecode(data); @@ -179,7 +177,7 @@ void importFromInput( child: Text( '取消', style: TextStyle( - color: Theme.of(context).colorScheme.outline, + color: ColorScheme.of(context).outline, ), ), ), diff --git a/lib/common/widgets/image/cached_network_svg_image.dart b/lib/common/widgets/image/cached_network_svg_image.dart index 0775612ef..a423aeda6 100644 --- a/lib/common/widgets/image/cached_network_svg_image.dart +++ b/lib/common/widgets/image/cached_network_svg_image.dart @@ -10,9 +10,9 @@ import 'package:flutter_svg/flutter_svg.dart'; class CachedNetworkSVGImage extends StatefulWidget { CachedNetworkSVGImage( - String url, { + this._url, { Key? key, - String? cacheKey, + this._cacheKey, this._placeholder, this._errorBuilder, this._width, @@ -28,10 +28,8 @@ class CachedNetworkSVGImage extends StatefulWidget { this._colorFilter, this._placeholderBuilder, BaseCacheManager? cacheManager, - }) : _url = url, - _cacheKey = cacheKey, - _cacheManager = cacheManager ?? DefaultCacheManager(), - super(key: key ?? ValueKey(cacheKey ?? url)); + }) : _cacheManager = cacheManager ?? DefaultCacheManager(), + super(key: key ?? ValueKey(_cacheKey ?? _url)); final String _url; final String? _cacheKey; diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index 1f49cb6fd..8dc62f3ce 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -87,9 +87,7 @@ Widget videoSeasonWidget( Colors.black54, ], ), - borderRadius: BorderRadius.vertical( - bottom: Style.imgRadius, - ), + borderRadius: .vertical(bottom: Style.imgRadius), ), child: DefaultTextStyle.merge( style: TextStyle( @@ -103,22 +101,16 @@ Widget videoSeasonWidget( DecoratedBox( decoration: const BoxDecoration( color: Colors.black45, - borderRadius: BorderRadius.all( - Radius.circular(4), - ), + borderRadius: .all(.circular(4)), ), child: Text(' $durationText '), ), const SizedBox(width: 6), ], if (video.stat case final stat?) ...[ - Text( - '${NumUtils.numFormat(stat.play)}播放', - ), + Text('${NumUtils.numFormat(stat.play)}播放'), const SizedBox(width: 6), - Text( - '${NumUtils.numFormat(stat.danmu)}弹幕', - ), + Text('${NumUtils.numFormat(stat.danmu)}弹幕'), ], const Spacer(), Image.asset( diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 921d6afa3..5b7791965 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -26,6 +26,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:tray_manager/tray_manager.dart'; +import 'package:win32/win32.dart' as kernel32; import 'package:window_manager/window_manager.dart'; class MainApp extends StatefulWidget { @@ -168,7 +169,11 @@ class _MainAppState extends PopScopeState await GStorage.close(); await trayManager.destroy(); if (Platform.isWindows) { - const MethodChannel('window_control').invokeMethod('closeWindow'); + // flutter_inappwebview + // 6.2.0-beta.2+ https://github.com/pichillilorenzo/flutter_inappwebview/issues/2482 + // 6.1.5 https://github.com/pichillilorenzo/flutter_inappwebview/issues/2512#issuecomment-3031039587 + final hProcess = kernel32.GetCurrentProcess(); + kernel32.TerminateProcess(hProcess, 0); } else { exit(0); } diff --git a/pubspec.lock b/pubspec.lock index bfac5c7e5..e327e9462 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -2003,7 +2003,7 @@ packages: source: git version: "1.2.2" win32: - dependency: transitive + dependency: "direct main" description: name: win32 sha256: ba6f4bba816c8d7e3c1580e170f3786d216951cc6b94babc3b814c08d2cb2738 diff --git a/pubspec.yaml b/pubspec.yaml index f4260ca58..40f823226 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -164,6 +164,7 @@ dependencies: git: url: https://github.com/wgh136/webdav_client.git ref: main + win32: ^6.3.0 window_manager: git: url: https://github.com/bggRGjQaUbCoE/window_manager.git diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp index 860ccf830..763061990 100644 --- a/windows/runner/flutter_window.cpp +++ b/windows/runner/flutter_window.cpp @@ -4,9 +4,6 @@ #include "flutter/generated_plugin_registrant.h" -#include -#include - FlutterWindow::FlutterWindow(const flutter::DartProject& project) : project_(project) {} @@ -29,24 +26,6 @@ bool FlutterWindow::OnCreate() { } RegisterPlugins(flutter_controller_->engine()); - // flutter_inappwebview - // 6.2.0-beta.2+ https://github.com/pichillilorenzo/flutter_inappwebview/issues/2482 - // 6.1.5 https://github.com/pichillilorenzo/flutter_inappwebview/issues/2512#issuecomment-3031039587 - flutter::MethodChannel<> channel( - flutter_controller_->engine()->messenger(), "window_control", - &flutter::StandardMethodCodec::GetInstance()); - channel.SetMethodCallHandler( - [](const flutter::MethodCall<>& call, - std::unique_ptr> result) { - if (call.method_name().compare("closeWindow") == 0) { - HANDLE hProcess = GetCurrentProcess(); - TerminateProcess(hProcess, 0); - result->Success(); - } else { - result->NotImplemented(); - } - }); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); // flutter_controller_->engine()->SetNextFrameCallback([&]() {