diff --git a/ui/flutter/lib/api/api.dart b/ui/flutter/lib/api/api.dart index 00f760de..2655e6a4 100644 --- a/ui/flutter/lib/api/api.dart +++ b/ui/flutter/lib/api/api.dart @@ -125,7 +125,7 @@ Future putConfig(DownloaderConfig config) async { return _parse(() => _client.dio.put("/api/v1/config", data: config), null); } -Future> proxyRequest(String uri, +Future> proxyRequest(String uri, {data, Options? options}) async { options ??= Options(); options.headers ??= {}; diff --git a/ui/flutter/lib/api/model/meta.dart b/ui/flutter/lib/api/model/meta.dart index e0b89775..0caf4f61 100644 --- a/ui/flutter/lib/api/model/meta.dart +++ b/ui/flutter/lib/api/model/meta.dart @@ -1,6 +1,6 @@ -import 'package:gopeed/api/model/options.dart'; -import 'package:gopeed/api/model/request.dart'; -import 'package:gopeed/api/model/resource.dart'; +import 'options.dart'; +import 'request.dart'; +import 'resource.dart'; import 'package:json_annotation/json_annotation.dart'; part 'meta.g.dart'; diff --git a/ui/flutter/lib/api/model/resolve_result.dart b/ui/flutter/lib/api/model/resolve_result.dart index 0491e859..5a056b3f 100644 --- a/ui/flutter/lib/api/model/resolve_result.dart +++ b/ui/flutter/lib/api/model/resolve_result.dart @@ -1,6 +1,7 @@ -import 'package:gopeed/api/model/resource.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'resource.dart'; + part 'resolve_result.g.dart'; @JsonSerializable(explicitToJson: true) diff --git a/ui/flutter/lib/app/modules/create/views/create_view.dart b/ui/flutter/lib/app/modules/create/views/create_view.dart index c2455c60..ef58a412 100644 --- a/ui/flutter/lib/app/modules/create/views/create_view.dart +++ b/ui/flutter/lib/app/modules/create/views/create_view.dart @@ -1,13 +1,15 @@ import 'package:desktop_drop/desktop_drop.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:gopeed/api/model/resolve_result.dart'; +import '../../../../api/model/resolve_result.dart'; +import '../../../../api/model/result.dart'; import 'package:rounded_loading_button/rounded_loading_button.dart'; import '../../../../api/api.dart'; import '../../../../api/model/create_task.dart'; import '../../../../api/model/options.dart'; import '../../../../api/model/request.dart'; +import '../../../../util/message.dart'; import '../../../../util/util.dart'; import '../../../routes/app_pages.dart'; import '../../../views/views/directory_selector.dart'; @@ -79,7 +81,7 @@ class CreateView extends GetView { await _showResolveDialog(rr); } } catch (e) { - Get.snackbar('error'.tr, e.toString()); + showErrorMessage(e); } finally { _confirmController.reset(); } @@ -167,7 +169,7 @@ class CreateView extends GetView { try { downloadController.start(); if (controller.selectedIndexes.isEmpty) { - Get.snackbar('tip'.tr, 'noFileSelected'.tr); + showMessage('tip'.tr, 'noFileSelected'.tr); return; } if (createFormKey.currentState!.validate()) { @@ -189,8 +191,7 @@ class CreateView extends GetView { Get.rootDelegate.offNamed(Routes.DOWNLOADING); } } catch (e) { - Get.snackbar('error'.tr, e.toString()); - rethrow; + showErrorMessage(e); } finally { downloadController.reset(); } diff --git a/ui/flutter/lib/app/modules/downloaded/views/downloaded_view.dart b/ui/flutter/lib/app/modules/downloaded/views/downloaded_view.dart index d9d12e9e..0ddf1d0e 100644 --- a/ui/flutter/lib/app/modules/downloaded/views/downloaded_view.dart +++ b/ui/flutter/lib/app/modules/downloaded/views/downloaded_view.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:gopeed/app/views/views/buid_task_list_view.dart'; +import '../../../views/views/buid_task_list_view.dart'; import '../controllers/downloaded_controller.dart'; class DownloadedView extends GetView { diff --git a/ui/flutter/lib/app/modules/setting/views/setting_view.dart b/ui/flutter/lib/app/modules/setting/views/setting_view.dart index 5a695c87..5ebef00b 100644 --- a/ui/flutter/lib/app/modules/setting/views/setting_view.dart +++ b/ui/flutter/lib/app/modules/setting/views/setting_view.dart @@ -4,6 +4,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; +import '../../../../util/message.dart'; import 'package:intl/intl.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -39,7 +40,7 @@ class SettingView extends GetView { .then(completer.complete) .onError(completer.completeError); if (needRestart) { - Get.snackbar('tip'.tr, 'effectAfterRestart'.tr); + showMessage('tip'.tr, 'effectAfterRestart'.tr); } }); return completer.future; @@ -126,7 +127,7 @@ class SettingView extends GetView { try { await appController.trackerUpdate(); } catch (e) { - Get.snackbar('error'.tr, 'subscribeFail'.tr); + showErrorMessage('subscribeFail'.tr); } finally { trackerUpdateController.stop(); } diff --git a/ui/flutter/lib/app/views/views/buid_task_list_view.dart b/ui/flutter/lib/app/views/views/buid_task_list_view.dart index 58d8760d..f060359f 100644 --- a/ui/flutter/lib/app/views/views/buid_task_list_view.dart +++ b/ui/flutter/lib/app/views/views/buid_task_list_view.dart @@ -8,6 +8,7 @@ import '../../../api/api.dart'; import '../../../api/model/task.dart'; import '../../../util/file_icon.dart'; import '../../../util/icons.dart'; +import '../../../util/message.dart'; import '../../../util/util.dart'; import '../../routes/app_pages.dart'; @@ -103,7 +104,7 @@ class BuildTaskListView extends GetView { await deleteTask(id, !keep.value); Get.back(); } catch (e) { - Get.snackbar('error'.tr, e.toString()); + showErrorMessage(e); } }, ), diff --git a/ui/flutter/lib/app/views/views/file_list_view.dart b/ui/flutter/lib/app/views/views/file_list_view.dart index 2563a9db..91c5cd87 100644 --- a/ui/flutter/lib/app/views/views/file_list_view.dart +++ b/ui/flutter/lib/app/views/views/file_list_view.dart @@ -3,7 +3,7 @@ import 'dart:ui' as ui; import 'package:fluent_ui/fluent_ui.dart' as fluent; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:gopeed/api/model/resource.dart'; +import '../../../api/model/resource.dart'; import 'package:path/path.dart' as path; import '../../../util/file_icon.dart'; diff --git a/ui/flutter/lib/core/common/libgopeed_channel.dart b/ui/flutter/lib/core/common/libgopeed_channel.dart index bf23c7e1..a94d3744 100644 --- a/ui/flutter/lib/core/common/libgopeed_channel.dart +++ b/ui/flutter/lib/core/common/libgopeed_channel.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:flutter/services.dart'; + import 'libgopeed_interface.dart'; import 'start_config.dart'; diff --git a/ui/flutter/lib/core/common/libgopeed_ffi.dart b/ui/flutter/lib/core/common/libgopeed_ffi.dart index 839025a2..ae2db5f9 100644 --- a/ui/flutter/lib/core/common/libgopeed_ffi.dart +++ b/ui/flutter/lib/core/common/libgopeed_ffi.dart @@ -3,8 +3,8 @@ import 'dart:convert'; import 'dart:ffi'; import 'package:ffi/ffi.dart'; -import '../ffi/libgopeed_bind.dart'; +import '../ffi/libgopeed_bind.dart'; import 'libgopeed_interface.dart'; import 'start_config.dart'; diff --git a/ui/flutter/lib/core/entry/libgopeed_boot_browser.dart b/ui/flutter/lib/core/entry/libgopeed_boot_browser.dart index dc3b7814..05efe963 100644 --- a/ui/flutter/lib/core/entry/libgopeed_boot_browser.dart +++ b/ui/flutter/lib/core/entry/libgopeed_boot_browser.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:gopeed/core/common/start_config.dart'; +import '../common/start_config.dart'; import '../libgopeed_boot.dart'; diff --git a/ui/flutter/lib/main.dart b/ui/flutter/lib/main.dart index 36ae4516..5d4902fd 100644 --- a/ui/flutter/lib/main.dart +++ b/ui/flutter/lib/main.dart @@ -1,8 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:gopeed/api/api.dart' as api; +import 'api/api.dart' as api; import 'app/modules/app/controllers/app_controller.dart'; import 'app/modules/app/views/app_view.dart'; import 'core/libgopeed_boot.dart'; diff --git a/ui/flutter/lib/util/message.dart b/ui/flutter/lib/util/message.dart new file mode 100644 index 00000000..fd2f75e1 --- /dev/null +++ b/ui/flutter/lib/util/message.dart @@ -0,0 +1,20 @@ +import 'package:get/get.dart'; + +import '../api/model/result.dart'; + +void showErrorMessage(msg) { + final title = 'error'.tr; + if (msg is Result) { + Get.snackbar(title, msg.msg!); + return; + } + if (msg is Exception && (msg as dynamic).message is Result) { + Get.snackbar(title, ((msg as dynamic).message as Result).msg!); + return; + } + Get.snackbar(title, msg); +} + +void showMessage(title, msg) { + Get.snackbar(title, msg); +} diff --git a/ui/flutter/pubspec.lock b/ui/flutter/pubspec.lock index bb64588e..20aaf4a6 100644 --- a/ui/flutter/pubspec.lock +++ b/ui/flutter/pubspec.lock @@ -277,10 +277,10 @@ packages: dependency: "direct main" description: name: fluent_ui - sha256: f9d443f9181900cfab9f38793195c7c4221cf05eb86918ac3517e67c024da867 + sha256: "55294f8f8b1aab6ac7a2be529b1dcb4affcff3e3176e5e50e5f1918a40050df7" url: "https://pub.flutter-io.cn" source: hosted - version: "4.2.0" + version: "4.4.0" flutter: dependency: "direct main" description: flutter @@ -1005,4 +1005,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.0 <3.0.0" - flutter: ">=3.3.0" + flutter: ">=3.7.0" diff --git a/ui/flutter/pubspec.yaml b/ui/flutter/pubspec.yaml index e69d6183..3d1c5292 100644 --- a/ui/flutter/pubspec.yaml +++ b/ui/flutter/pubspec.yaml @@ -51,7 +51,7 @@ dependencies: desktop_drop: ^0.3.3 intl: ^0.17.0 package_info_plus: ^3.0.2 - fluent_ui: ^4.2.0 + fluent_ui: ^4.4.0 path: any dev_dependencies: flutter_test: