From 8739ea11bc1f81f220182beb867a315a78f9c566 Mon Sep 17 00:00:00 2001 From: hejl Date: Mon, 19 May 2025 14:26:29 +0800 Subject: [PATCH] =?UTF-8?q?tab=E5=85=B3=E9=97=AD=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/framework/controllers/tab_manager.dart | 3 +-- .../lib/framework/widgets/tab_view.dart | 17 +++-------------- .../widgets/content_search_view.dart | 6 ++---- 3 files changed, 6 insertions(+), 20 deletions(-) diff --git a/win_text_editor/lib/framework/controllers/tab_manager.dart b/win_text_editor/lib/framework/controllers/tab_manager.dart index b23af4a..bed1b6f 100644 --- a/win_text_editor/lib/framework/controllers/tab_manager.dart +++ b/win_text_editor/lib/framework/controllers/tab_manager.dart @@ -45,13 +45,12 @@ class TabManager with ChangeNotifier { try { return _tabs.firstWhere((tab) => tab.id == tabId); } catch (e) { - Logger().error("找不到选项卡: ${tabId}", source: 'EditorProvider'); + Logger().error("找不到选项卡: $tabId", source: 'EditorProvider'); return null; } } void closeTab(String tabId) { - Logger().info('关闭选项卡: $tabId'); final controller = _tabControllers[tabId]; controller?.dispose(); // 先释放Controller _tabControllers.remove(tabId); // 移除Controller引用 diff --git a/win_text_editor/lib/framework/widgets/tab_view.dart b/win_text_editor/lib/framework/widgets/tab_view.dart index 9666a56..90c4f6a 100644 --- a/win_text_editor/lib/framework/widgets/tab_view.dart +++ b/win_text_editor/lib/framework/widgets/tab_view.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:win_text_editor/modules/content_search/controllers/content_search_controller.dart'; import 'package:win_text_editor/shared/components/text_editor.dart'; import 'package:win_text_editor/framework/controllers/tab_manager.dart'; import 'package:win_text_editor/framework/models/tab_model.dart'; @@ -17,19 +16,9 @@ class TabView extends StatefulWidget { } class _TabViewState extends State { - // 缓存已创建的视图 - final Map _viewCache = {}; - @override Widget build(BuildContext context) { - return Column( - children: [ - // 选项卡标签栏 - _buildTabBar(context), - // 选项卡内容区 - Expanded(child: _buildTabContent()), - ], - ); + return Column(children: [_buildTabBar(context), Expanded(child: _buildTabContent())]); } Widget _buildTabBar(BuildContext context) { @@ -60,13 +49,13 @@ class _TabViewState extends State { index: activeIndex, children: widget.tabs.map((tab) { - final controller = tabManager.getController(tab.id); + final controller = tabManager.getController(tab.id); return KeyedSubtree(key: ValueKey(tab.id), child: _buildTabItem(tab, controller)); }).toList(), ); } - Widget _buildTabItem(AppTab tab, ContentSearchController? controller) { + Widget _buildTabItem(AppTab tab, ChangeNotifier? controller) { switch (tab.type) { case 'content_search': return ContentSearchView(tabId: tab.id, controller: controller); 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 ec83852..322a2df 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 @@ -8,7 +8,7 @@ import 'search_settings.dart'; import 'results_view.dart'; class ContentSearchView extends BaseView { - final ContentSearchController? controller; + final ChangeNotifier? controller; const ContentSearchView({super.key, required String tabId, this.controller}) : super(tabId: tabId); @@ -21,7 +21,6 @@ class ContentSearchViewState extends BaseViewState { @override void initState() { - print('Initializing ContentSearchViewState, tabId: ${widget.tabId}'); super.initState(); _controller = tabManager.getController(widget.tabId) ?? ContentSearchController(tabManager: tabManager); @@ -34,14 +33,12 @@ class ContentSearchViewState extends BaseViewState { @override void dispose() { - print('dispose ContentSearchViewState, tabId: ${widget.tabId}'); super.dispose(); } @override void onOpenFolder(String folderPath) { // 实现打开文件夹的逻辑 - Logger().debug('Opening folder: $folderPath'); _controller.searchDirectory = folderPath; } @@ -53,6 +50,7 @@ class ContentSearchViewState extends BaseViewState { @override Widget build(BuildContext context) { + super.build(context); return ChangeNotifierProvider.value( value: _controller, child: const Padding(