Browse Source

tab关闭问题修复

master
hejl 2 months ago
parent
commit
8739ea11bc
  1. 3
      win_text_editor/lib/framework/controllers/tab_manager.dart
  2. 17
      win_text_editor/lib/framework/widgets/tab_view.dart
  3. 6
      win_text_editor/lib/modules/content_search/widgets/content_search_view.dart

3
win_text_editor/lib/framework/controllers/tab_manager.dart

@ -45,13 +45,12 @@ class TabManager with ChangeNotifier { @@ -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引用

17
win_text_editor/lib/framework/widgets/tab_view.dart

@ -1,6 +1,5 @@ @@ -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 { @@ -17,19 +16,9 @@ class TabView extends StatefulWidget {
}
class _TabViewState extends State<TabView> {
//
final Map<String, Widget> _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<TabView> { @@ -60,13 +49,13 @@ class _TabViewState extends State<TabView> {
index: activeIndex,
children:
widget.tabs.map((tab) {
final controller = tabManager.getController<ContentSearchController>(tab.id);
final controller = tabManager.getController<ChangeNotifier>(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);

6
win_text_editor/lib/modules/content_search/widgets/content_search_view.dart

@ -8,7 +8,7 @@ import 'search_settings.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 { @@ -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 { @@ -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 { @@ -53,6 +50,7 @@ class ContentSearchViewState extends BaseViewState {
@override
Widget build(BuildContext context) {
super.build(context);
return ChangeNotifierProvider.value(
value: _controller,
child: const Padding(

Loading…
Cancel
Save