From df4bd480383ee188b96198d46d481c5af9661c17 Mon Sep 17 00:00:00 2001 From: hejl Date: Mon, 19 May 2025 09:12:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E9=87=8D=E6=9E=84=EF=BC=8C?= =?UTF-8?q?=E5=89=A9=E4=BD=99=E4=B8=80=E4=B8=AA=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?tabview=E4=B8=8E=E5=86=85=E5=AE=B9=E7=9A=84=E5=85=B3=E8=81=94?= =?UTF-8?q?=E4=B9=B1=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers}/editor_provider.dart | 2 +- .../controllers}/file_provider.dart | 6 +-- .../controllers}/logger.dart | 0 .../controllers}/tab_manager.dart | 4 +- .../models/file_node.dart | 0 .../models/tab_model.dart | 0 .../services/file_service.dart | 2 +- .../services/syntax_service.dart | 0 .../widgets/app_scaffold.dart | 10 ++-- .../widgets/console_panel.dart | 2 +- .../widgets/file_explorer_pane.dart | 2 +- .../widgets/tab_view.dart | 4 +- win_text_editor/lib/main.dart | 4 +- win_text_editor/lib/menus/menu_actions.dart | 4 +- .../content_search_controller.dart | 4 +- .../services/content_search_service.dart | 2 +- .../widgets/content_search_view.dart | 4 +- .../widgets/directory_settings.dart | 54 +++++++++---------- .../content_search/widgets/results_view.dart | 2 +- .../widgets/search_settings.dart | 2 +- .../lib/shared/components/file_explorer.dart | 4 +- .../lib/shared/utils/file_utils.dart | 2 +- .../flutter/generated_plugin_registrant.cc | 3 ++ .../windows/flutter/generated_plugins.cmake | 1 + 24 files changed, 61 insertions(+), 57 deletions(-) rename win_text_editor/lib/{frame/providers => framework/controllers}/editor_provider.dart (98%) rename win_text_editor/lib/{frame/providers => framework/controllers}/file_provider.dart (96%) rename win_text_editor/lib/{frame/providers => framework/controllers}/logger.dart (100%) rename win_text_editor/lib/{frame/widgets => framework/controllers}/tab_manager.dart (93%) rename win_text_editor/lib/{frame => framework}/models/file_node.dart (100%) rename win_text_editor/lib/{frame => framework}/models/tab_model.dart (100%) rename win_text_editor/lib/{frame => framework}/services/file_service.dart (97%) rename win_text_editor/lib/{frame => framework}/services/syntax_service.dart (100%) rename win_text_editor/lib/{frame => framework}/widgets/app_scaffold.dart (81%) rename win_text_editor/lib/{frame => framework}/widgets/console_panel.dart (98%) rename win_text_editor/lib/{frame => framework}/widgets/file_explorer_pane.dart (96%) rename win_text_editor/lib/{frame => framework}/widgets/tab_view.dart (95%) rename win_text_editor/lib/modules/content_search/{providers => controllers}/content_search_controller.dart (97%) diff --git a/win_text_editor/lib/frame/providers/editor_provider.dart b/win_text_editor/lib/framework/controllers/editor_provider.dart similarity index 98% rename from win_text_editor/lib/frame/providers/editor_provider.dart rename to win_text_editor/lib/framework/controllers/editor_provider.dart index 6141e9e..3ec2cad 100644 --- a/win_text_editor/lib/frame/providers/editor_provider.dart +++ b/win_text_editor/lib/framework/controllers/editor_provider.dart @@ -1,7 +1,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; class EditorProvider with ChangeNotifier { final List _tabs = []; diff --git a/win_text_editor/lib/frame/providers/file_provider.dart b/win_text_editor/lib/framework/controllers/file_provider.dart similarity index 96% rename from win_text_editor/lib/frame/providers/file_provider.dart rename to win_text_editor/lib/framework/controllers/file_provider.dart index 44b76f2..7764b53 100644 --- a/win_text_editor/lib/frame/providers/file_provider.dart +++ b/win_text_editor/lib/framework/controllers/file_provider.dart @@ -2,9 +2,9 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:file_picker/file_picker.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:win_text_editor/frame/models/file_node.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; -import 'package:win_text_editor/frame/services/file_service.dart'; +import 'package:win_text_editor/framework/models/file_node.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; +import 'package:win_text_editor/framework/services/file_service.dart'; class FileProvider with ChangeNotifier { List _fileNodes = []; diff --git a/win_text_editor/lib/frame/providers/logger.dart b/win_text_editor/lib/framework/controllers/logger.dart similarity index 100% rename from win_text_editor/lib/frame/providers/logger.dart rename to win_text_editor/lib/framework/controllers/logger.dart diff --git a/win_text_editor/lib/frame/widgets/tab_manager.dart b/win_text_editor/lib/framework/controllers/tab_manager.dart similarity index 93% rename from win_text_editor/lib/frame/widgets/tab_manager.dart rename to win_text_editor/lib/framework/controllers/tab_manager.dart index f9e38e9..f78aff1 100644 --- a/win_text_editor/lib/frame/widgets/tab_manager.dart +++ b/win_text_editor/lib/framework/controllers/tab_manager.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:win_text_editor/frame/models/tab_model.dart'; +import 'package:win_text_editor/framework/models/tab_model.dart'; import 'package:win_text_editor/shared/base/base_view.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; class TabManager with ChangeNotifier { final List _tabs = []; diff --git a/win_text_editor/lib/frame/models/file_node.dart b/win_text_editor/lib/framework/models/file_node.dart similarity index 100% rename from win_text_editor/lib/frame/models/file_node.dart rename to win_text_editor/lib/framework/models/file_node.dart diff --git a/win_text_editor/lib/frame/models/tab_model.dart b/win_text_editor/lib/framework/models/tab_model.dart similarity index 100% rename from win_text_editor/lib/frame/models/tab_model.dart rename to win_text_editor/lib/framework/models/tab_model.dart diff --git a/win_text_editor/lib/frame/services/file_service.dart b/win_text_editor/lib/framework/services/file_service.dart similarity index 97% rename from win_text_editor/lib/frame/services/file_service.dart rename to win_text_editor/lib/framework/services/file_service.dart index f73bf68..76359e3 100644 --- a/win_text_editor/lib/frame/services/file_service.dart +++ b/win_text_editor/lib/framework/services/file_service.dart @@ -1,5 +1,5 @@ import 'dart:io'; -import 'package:win_text_editor/frame/models/file_node.dart'; +import 'package:win_text_editor/framework/models/file_node.dart'; class FileService { /// 延时加载目录内容(不递归) diff --git a/win_text_editor/lib/frame/services/syntax_service.dart b/win_text_editor/lib/framework/services/syntax_service.dart similarity index 100% rename from win_text_editor/lib/frame/services/syntax_service.dart rename to win_text_editor/lib/framework/services/syntax_service.dart diff --git a/win_text_editor/lib/frame/widgets/app_scaffold.dart b/win_text_editor/lib/framework/widgets/app_scaffold.dart similarity index 81% rename from win_text_editor/lib/frame/widgets/app_scaffold.dart rename to win_text_editor/lib/framework/widgets/app_scaffold.dart index 9346ebf..40501ad 100644 --- a/win_text_editor/lib/frame/widgets/app_scaffold.dart +++ b/win_text_editor/lib/framework/widgets/app_scaffold.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/frame/widgets/file_explorer_pane.dart'; -import 'package:win_text_editor/frame/widgets/tab_manager.dart'; -import 'package:win_text_editor/frame/widgets/tab_view.dart'; +import 'package:win_text_editor/framework/widgets/file_explorer_pane.dart'; +import 'package:win_text_editor/framework/controllers/tab_manager.dart'; +import 'package:win_text_editor/framework/widgets/tab_view.dart'; import 'package:win_text_editor/menus/app_menu.dart'; -import 'package:win_text_editor/frame/providers/file_provider.dart'; -import 'package:win_text_editor/frame/widgets/console_panel.dart'; +import 'package:win_text_editor/framework/controllers/file_provider.dart'; +import 'package:win_text_editor/framework/widgets/console_panel.dart'; class AppScaffold extends StatelessWidget { const AppScaffold({super.key}); diff --git a/win_text_editor/lib/frame/widgets/console_panel.dart b/win_text_editor/lib/framework/widgets/console_panel.dart similarity index 98% rename from win_text_editor/lib/frame/widgets/console_panel.dart rename to win_text_editor/lib/framework/widgets/console_panel.dart index 9730628..962dc95 100644 --- a/win_text_editor/lib/frame/widgets/console_panel.dart +++ b/win_text_editor/lib/framework/widgets/console_panel.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:flutter/services.dart'; // 用于复制到剪贴板 -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; class ConsolePanel extends StatefulWidget { const ConsolePanel({super.key}); diff --git a/win_text_editor/lib/frame/widgets/file_explorer_pane.dart b/win_text_editor/lib/framework/widgets/file_explorer_pane.dart similarity index 96% rename from win_text_editor/lib/frame/widgets/file_explorer_pane.dart rename to win_text_editor/lib/framework/widgets/file_explorer_pane.dart index f871371..1e5f15e 100644 --- a/win_text_editor/lib/frame/widgets/file_explorer_pane.dart +++ b/win_text_editor/lib/framework/widgets/file_explorer_pane.dart @@ -1,7 +1,7 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/frame/providers/file_provider.dart'; +import 'package:win_text_editor/framework/controllers/file_provider.dart'; import 'package:win_text_editor/shared/components/file_explorer.dart'; class FileExplorerPane extends StatelessWidget { diff --git a/win_text_editor/lib/frame/widgets/tab_view.dart b/win_text_editor/lib/framework/widgets/tab_view.dart similarity index 95% rename from win_text_editor/lib/frame/widgets/tab_view.dart rename to win_text_editor/lib/framework/widgets/tab_view.dart index edd0187..e76ece6 100644 --- a/win_text_editor/lib/frame/widgets/tab_view.dart +++ b/win_text_editor/lib/framework/widgets/tab_view.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:win_text_editor/shared/components/text_editor.dart'; -import 'package:win_text_editor/frame/widgets/tab_manager.dart'; -import 'package:win_text_editor/frame/models/tab_model.dart'; +import 'package:win_text_editor/framework/controllers/tab_manager.dart'; +import 'package:win_text_editor/framework/models/tab_model.dart'; import 'package:win_text_editor/modules/content_search/widgets/content_search_view.dart'; class TabView extends StatelessWidget { diff --git a/win_text_editor/lib/main.dart b/win_text_editor/lib/main.dart index 7520f6c..8dcc0bb 100644 --- a/win_text_editor/lib/main.dart +++ b/win_text_editor/lib/main.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/frame/widgets/app_scaffold.dart'; +import 'package:win_text_editor/framework/widgets/app_scaffold.dart'; import 'package:window_manager/window_manager.dart'; -import 'frame/providers/logger.dart'; // 新增导入 +import 'framework/controllers/logger.dart'; // 新增导入 void main() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/win_text_editor/lib/menus/menu_actions.dart b/win_text_editor/lib/menus/menu_actions.dart index b75f40c..ee20030 100644 --- a/win_text_editor/lib/menus/menu_actions.dart +++ b/win_text_editor/lib/menus/menu_actions.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:file_picker/file_picker.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/frame/widgets/tab_manager.dart'; +import 'package:win_text_editor/framework/controllers/tab_manager.dart'; import 'package:win_text_editor/menus/menu_constants.dart'; -import 'package:win_text_editor/frame/providers/file_provider.dart'; +import 'package:win_text_editor/framework/controllers/file_provider.dart'; import 'package:collection/collection.dart'; import 'dart:io'; diff --git a/win_text_editor/lib/modules/content_search/providers/content_search_controller.dart b/win_text_editor/lib/modules/content_search/controllers/content_search_controller.dart similarity index 97% rename from win_text_editor/lib/modules/content_search/providers/content_search_controller.dart rename to win_text_editor/lib/modules/content_search/controllers/content_search_controller.dart index f983bf3..5e7c7a6 100644 --- a/win_text_editor/lib/modules/content_search/providers/content_search_controller.dart +++ b/win_text_editor/lib/modules/content_search/controllers/content_search_controller.dart @@ -7,8 +7,8 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:file_picker/file_picker.dart'; import 'package:path/path.dart' as path; -import 'package:win_text_editor/frame/widgets/tab_manager.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/tab_manager.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; import 'package:win_text_editor/modules/content_search/models/search_mode.dart'; import 'package:win_text_editor/modules/content_search/models/search_result.dart'; import '../services/content_search_service.dart'; diff --git a/win_text_editor/lib/modules/content_search/services/content_search_service.dart b/win_text_editor/lib/modules/content_search/services/content_search_service.dart index a90794a..511d712 100644 --- a/win_text_editor/lib/modules/content_search/services/content_search_service.dart +++ b/win_text_editor/lib/modules/content_search/services/content_search_service.dart @@ -4,7 +4,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter_js/flutter_js.dart'; import 'package:path/path.dart' as path; -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; import 'package:win_text_editor/modules/content_search/models/match_result.dart'; import 'package:win_text_editor/modules/content_search/models/search_mode.dart'; import 'package:win_text_editor/modules/content_search/models/search_result.dart'; diff --git a/win_text_editor/lib/modules/content_search/widgets/content_search_view.dart b/win_text_editor/lib/modules/content_search/widgets/content_search_view.dart index c9b9203..5a0bcd9 100644 --- a/win_text_editor/lib/modules/content_search/widgets/content_search_view.dart +++ b/win_text_editor/lib/modules/content_search/widgets/content_search_view.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:win_text_editor/shared/base/base_view.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; -import '../providers/content_search_controller.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; +import '../controllers/content_search_controller.dart'; import 'directory_settings.dart'; import 'search_settings.dart'; import 'results_view.dart'; diff --git a/win_text_editor/lib/modules/content_search/widgets/directory_settings.dart b/win_text_editor/lib/modules/content_search/widgets/directory_settings.dart index 96a6760..0561a14 100644 --- a/win_text_editor/lib/modules/content_search/widgets/directory_settings.dart +++ b/win_text_editor/lib/modules/content_search/widgets/directory_settings.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart'; +import 'package:win_text_editor/modules/content_search/controllers/content_search_controller.dart'; class DirectorySettings extends StatefulWidget { const DirectorySettings({super.key}); @@ -41,46 +41,46 @@ class _DirectorySettingsState extends State { _fileTypeController.text = controller.fileType; } - return Card( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - Expanded( - child: TextField( - controller: _searchDirectoryController, + return Card( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Expanded( + child: TextField( + controller: _searchDirectoryController, decoration: const InputDecoration( labelText: '搜索目录', border: OutlineInputBorder(), - ), + ), onChanged: (value) => controller.searchDirectory = value, - ), + ), ), - const SizedBox(width: 8), - SizedBox( - width: 100, - child: TextField( - controller: _fileTypeController, + const SizedBox(width: 8), + SizedBox( + width: 100, + child: TextField( + controller: _fileTypeController, decoration: const InputDecoration( labelText: '文件类型', border: OutlineInputBorder(), - ), + ), onChanged: (value) => controller.fileType = value, - ), + ), ), - const SizedBox(width: 8), - IconButton( - icon: const Icon(Icons.folder_open), - onPressed: () async { + const SizedBox(width: 8), + IconButton( + icon: const Icon(Icons.folder_open), + onPressed: () async { await controller.pickDirectory(); // 不需要手动更新 _searchDirectoryController.text, // 因为 Consumer 会触发重建并自动同步 - }, + }, + ), + ], ), - ], - ), - ), - ); + ), + ); }, ); } diff --git a/win_text_editor/lib/modules/content_search/widgets/results_view.dart b/win_text_editor/lib/modules/content_search/widgets/results_view.dart index 5ab607f..b9246e1 100644 --- a/win_text_editor/lib/modules/content_search/widgets/results_view.dart +++ b/win_text_editor/lib/modules/content_search/widgets/results_view.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:syncfusion_flutter_datagrid/datagrid.dart'; import 'package:path/path.dart' as path; -import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart'; +import 'package:win_text_editor/modules/content_search/controllers/content_search_controller.dart'; import 'package:file_picker/file_picker.dart'; import 'dart:io'; diff --git a/win_text_editor/lib/modules/content_search/widgets/search_settings.dart b/win_text_editor/lib/modules/content_search/widgets/search_settings.dart index bf8632d..fc9c6a2 100644 --- a/win_text_editor/lib/modules/content_search/widgets/search_settings.dart +++ b/win_text_editor/lib/modules/content_search/widgets/search_settings.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:win_text_editor/shared/components/text_editor.dart'; -import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart'; +import 'package:win_text_editor/modules/content_search/controllers/content_search_controller.dart'; import 'package:win_text_editor/modules/content_search/models/search_mode.dart'; class SearchSettings extends StatelessWidget { diff --git a/win_text_editor/lib/shared/components/file_explorer.dart b/win_text_editor/lib/shared/components/file_explorer.dart index 8b409e6..dfb9812 100644 --- a/win_text_editor/lib/shared/components/file_explorer.dart +++ b/win_text_editor/lib/shared/components/file_explorer.dart @@ -2,8 +2,8 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../frame/models/file_node.dart'; -import '../../frame/providers/file_provider.dart'; +import '../../framework/models/file_node.dart'; +import '../../framework/controllers/file_provider.dart'; import 'dart:math'; diff --git a/win_text_editor/lib/shared/utils/file_utils.dart b/win_text_editor/lib/shared/utils/file_utils.dart index a791acb..2fb7ac1 100644 --- a/win_text_editor/lib/shared/utils/file_utils.dart +++ b/win_text_editor/lib/shared/utils/file_utils.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:file_picker/file_picker.dart'; -import 'package:win_text_editor/frame/providers/logger.dart'; +import 'package:win_text_editor/framework/controllers/logger.dart'; class FileUtils { static Future pickFile(BuildContext context) async { diff --git a/win_text_editor/windows/flutter/generated_plugin_registrant.cc b/win_text_editor/windows/flutter/generated_plugin_registrant.cc index a38b023..760476a 100644 --- a/win_text_editor/windows/flutter/generated_plugin_registrant.cc +++ b/win_text_editor/windows/flutter/generated_plugin_registrant.cc @@ -7,12 +7,15 @@ #include "generated_plugin_registrant.h" #include +#include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { BitsdojoWindowPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("BitsdojoWindowPlugin")); + FlutterJsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterJsPlugin")); ScreenRetrieverPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); WindowManagerPluginRegisterWithRegistrar( diff --git a/win_text_editor/windows/flutter/generated_plugins.cmake b/win_text_editor/windows/flutter/generated_plugins.cmake index b404ce5..08bf885 100644 --- a/win_text_editor/windows/flutter/generated_plugins.cmake +++ b/win_text_editor/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST bitsdojo_window_windows + flutter_js screen_retriever window_manager )