Browse Source

重构-重命名

master
hejl 2 months ago
parent
commit
efd610da8d
  1. 20
      win_text_editor/lib/framework/controllers/tab_items_controller.dart
  2. 8
      win_text_editor/lib/framework/widgets/app_scaffold.dart
  3. 8
      win_text_editor/lib/framework/widgets/tab_view.dart
  4. 6
      win_text_editor/lib/menus/menu_actions.dart
  5. 4
      win_text_editor/lib/modules/content_search/widgets/content_search_view.dart

20
win_text_editor/lib/framework/controllers/tab_manager.dart → win_text_editor/lib/framework/controllers/tab_items_controller.dart

@ -4,9 +4,9 @@ import 'package:win_text_editor/modules/content_search/controllers/content_searc
import 'package:win_text_editor/shared/base/base_content_controller.dart'; import 'package:win_text_editor/shared/base/base_content_controller.dart';
import 'package:win_text_editor/framework/controllers/logger.dart'; import 'package:win_text_editor/framework/controllers/logger.dart';
class TabManager with ChangeNotifier { class TabItemsController with ChangeNotifier {
final List<AppTab> _tabs = []; final List<AppTab> _tabs = [];
final Map<String, BaseContentController> _tabControllers = {}; // Tab的Controller final Map<String, BaseContentController> _contentControllers = {}; // Tab的Controller
String? _activeTabId; String? _activeTabId;
List<AppTab> get tabs => _tabs; List<AppTab> get tabs => _tabs;
@ -37,7 +37,7 @@ class TabManager with ChangeNotifier {
// provider // provider
final controller = createContentController(newTab); final controller = createContentController(newTab);
if (controller != null) { if (controller != null) {
_tabControllers[id] = controller; _contentControllers[id] = controller;
} }
_activeTabId = id; _activeTabId = id;
notifyListeners(); notifyListeners();
@ -63,14 +63,14 @@ class TabManager with ChangeNotifier {
BaseContentController? get activeContentController { BaseContentController? get activeContentController {
if (_activeTabId == null) return null; if (_activeTabId == null) return null;
final controller = _tabControllers[_activeTabId]; final controller = _contentControllers[_activeTabId];
return controller is BaseContentController ? controller : null; return controller is BaseContentController ? controller : null;
} }
void closeTab(String tabId) { void closeTab(String tabId) {
final controller = _tabControllers[tabId]; final controller = _contentControllers[tabId];
controller?.dispose(); // Controller controller?.dispose(); // Controller
_tabControllers.remove(tabId); // Controller引用 _contentControllers.remove(tabId); // Controller引用
_tabs.removeWhere((tab) => tab.id == tabId); // Tab _tabs.removeWhere((tab) => tab.id == tabId); // Tab
if (_activeTabId == tabId) { if (_activeTabId == tabId) {
@ -80,16 +80,16 @@ class TabManager with ChangeNotifier {
} }
void registerController(String tabId, BaseContentController controller) { void registerController(String tabId, BaseContentController controller) {
_tabControllers[tabId] = controller; _contentControllers[tabId] = controller;
} }
T? getController<T extends ChangeNotifier>(String tabId) { T? getController<T extends ChangeNotifier>(String tabId) {
return _tabControllers[tabId] as T?; return _contentControllers[tabId] as T?;
} }
void disposeController(String tabId) { void disposeController(String tabId) {
_tabControllers[tabId]?.dispose(); _contentControllers[tabId]?.dispose();
_tabControllers.remove(tabId); _contentControllers.remove(tabId);
} }
void setActiveTab(String tabId) { void setActiveTab(String tabId) {

8
win_text_editor/lib/framework/widgets/app_scaffold.dart

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:win_text_editor/framework/controllers/tab_items_controller.dart';
import 'package:win_text_editor/framework/widgets/file_explorer_pane.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/framework/widgets/tab_view.dart';
import 'package:win_text_editor/menus/app_menu.dart'; import 'package:win_text_editor/menus/app_menu.dart';
import 'package:win_text_editor/framework/controllers/file_provider.dart'; import 'package:win_text_editor/framework/controllers/file_provider.dart';
@ -15,7 +15,7 @@ class AppScaffold extends StatelessWidget {
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider(create: (_) => FileProvider()), ChangeNotifierProvider(create: (_) => FileProvider()),
ChangeNotifierProvider(create: (_) => TabManager()), ChangeNotifierProvider(create: (_) => TabItemsController()),
], ],
child: Scaffold( child: Scaffold(
backgroundColor: Colors.grey[100], backgroundColor: Colors.grey[100],
@ -26,7 +26,7 @@ class AppScaffold extends StatelessWidget {
child: Row( child: Row(
children: [ children: [
// - // -
Consumer<TabManager>( Consumer<TabItemsController>(
builder: (context, tabManager, child) { builder: (context, tabManager, child) {
return FileExplorerPane( return FileExplorerPane(
onFileDoubleTap: (path) => tabManager.handleFileDoubleTap(path), onFileDoubleTap: (path) => tabManager.handleFileDoubleTap(path),
@ -36,7 +36,7 @@ class AppScaffold extends StatelessWidget {
), ),
// //
Expanded( Expanded(
child: Consumer<TabManager>( child: Consumer<TabItemsController>(
builder: builder:
(_, manager, __) => (_, manager, __) =>
TabView(tabs: manager.tabs, currentTabId: manager.activeTabId), TabView(tabs: manager.tabs, currentTabId: manager.activeTabId),

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

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:win_text_editor/shared/components/text_editor.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/controllers/tab_items_controller.dart';
import 'package:win_text_editor/framework/models/tab_model.dart'; import 'package:win_text_editor/framework/models/tab_model.dart';
import 'package:win_text_editor/modules/content_search/widgets/content_search_view.dart'; import 'package:win_text_editor/modules/content_search/widgets/content_search_view.dart';
@ -32,8 +32,8 @@ class _TabViewState extends State<TabView> {
return _TabItem( return _TabItem(
tab: tab, tab: tab,
isActive: tab.id == widget.currentTabId, isActive: tab.id == widget.currentTabId,
onClose: () => context.read<TabManager>().closeTab(tab.id), onClose: () => context.read<TabItemsController>().closeTab(tab.id),
onTap: () => context.read<TabManager>().setActiveTab(tab.id), onTap: () => context.read<TabItemsController>().setActiveTab(tab.id),
); );
}, },
), ),
@ -41,7 +41,7 @@ class _TabViewState extends State<TabView> {
} }
Widget _buildTabContent() { Widget _buildTabContent() {
final tabManager = Provider.of<TabManager>(context, listen: false); final tabManager = Provider.of<TabItemsController>(context, listen: false);
final activeIndex = widget.tabs.indexWhere((t) => t.id == widget.currentTabId); final activeIndex = widget.tabs.indexWhere((t) => t.id == widget.currentTabId);
if (activeIndex == -1) return const Center(child: Text('无活动标签页')); if (activeIndex == -1) return const Center(child: Text('无活动标签页'));

6
win_text_editor/lib/menus/menu_actions.dart

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:win_text_editor/framework/controllers/tab_manager.dart'; import 'package:win_text_editor/framework/controllers/tab_items_controller.dart';
import 'package:win_text_editor/menus/menu_constants.dart'; import 'package:win_text_editor/menus/menu_constants.dart';
import 'package:win_text_editor/framework/controllers/file_provider.dart'; import 'package:win_text_editor/framework/controllers/file_provider.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
@ -48,7 +48,7 @@ class MenuActions {
} }
static Future<void> _openContentSearch(BuildContext context) async { static Future<void> _openContentSearch(BuildContext context) async {
final tabManager = Provider.of<TabManager>(context, listen: false); final tabManager = Provider.of<TabItemsController>(context, listen: false);
// Create new tab with unique ID // Create new tab with unique ID
final tabId = DateTime.now().millisecondsSinceEpoch.toString(); final tabId = DateTime.now().millisecondsSinceEpoch.toString();
@ -63,7 +63,7 @@ class MenuActions {
} }
static Future<void> _openTemplateParser(BuildContext context) async { static Future<void> _openTemplateParser(BuildContext context) async {
final tabManager = Provider.of<TabManager>(context, listen: false); final tabManager = Provider.of<TabItemsController>(context, listen: false);
// 使 firstWhereOrNull // 使 firstWhereOrNull
final existingTab = tabManager.tabs.firstWhereOrNull( final existingTab = tabManager.tabs.firstWhereOrNull(

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

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:win_text_editor/framework/controllers/tab_manager.dart'; import 'package:win_text_editor/framework/controllers/tab_items_controller.dart';
import '../controllers/content_search_controller.dart'; import '../controllers/content_search_controller.dart';
import 'directory_settings.dart'; import 'directory_settings.dart';
import 'search_settings.dart'; import 'search_settings.dart';
@ -18,7 +18,7 @@ class ContentSearchView extends StatefulWidget {
class ContentSearchViewState extends State<ContentSearchView> { class ContentSearchViewState extends State<ContentSearchView> {
late final ContentSearchController _controller; late final ContentSearchController _controller;
get tabManager => Provider.of<TabManager>(context, listen: false); get tabManager => Provider.of<TabItemsController>(context, listen: false);
@override @override
void initState() { void initState() {

Loading…
Cancel
Save