Browse Source

重构目录

master
hejl 2 months ago
parent
commit
1e2b3acbb1
  1. 33
      win_text_editor/lib/app/modules/template_parser/template_parser_controller.dart
  2. 7
      win_text_editor/lib/app/modules/template_parser/template_parser_service.dart
  3. 89
      win_text_editor/lib/app/modules/template_parser/template_parser_view.dart
  4. 0
      win_text_editor/lib/frame/models/file_node.dart
  5. 0
      win_text_editor/lib/frame/models/tab_model.dart
  6. 2
      win_text_editor/lib/frame/providers/editor_provider.dart
  7. 6
      win_text_editor/lib/frame/providers/file_provider.dart
  8. 0
      win_text_editor/lib/frame/providers/logger.dart
  9. 2
      win_text_editor/lib/frame/services/file_service.dart
  10. 0
      win_text_editor/lib/frame/services/syntax_service.dart
  11. 12
      win_text_editor/lib/frame/widgets/app_scaffold.dart
  12. 2
      win_text_editor/lib/frame/widgets/console_panel.dart
  13. 4
      win_text_editor/lib/frame/widgets/file_explorer_pane.dart
  14. 6
      win_text_editor/lib/frame/widgets/tab_manager.dart
  15. 11
      win_text_editor/lib/frame/widgets/tab_view.dart
  16. 4
      win_text_editor/lib/main.dart
  17. 2
      win_text_editor/lib/menus/app_menu.dart
  18. 6
      win_text_editor/lib/menus/menu_actions.dart
  19. 0
      win_text_editor/lib/menus/menu_constants.dart
  20. 6
      win_text_editor/lib/modules/content_search/models/match_result.dart
  21. 1
      win_text_editor/lib/modules/content_search/models/search_mode.dart
  22. 11
      win_text_editor/lib/modules/content_search/models/search_result.dart
  23. 9
      win_text_editor/lib/modules/content_search/providers/content_search_controller.dart
  24. 6
      win_text_editor/lib/modules/content_search/services/content_search_service.dart
  25. 6
      win_text_editor/lib/modules/content_search/widgets/content_search_view.dart
  26. 2
      win_text_editor/lib/modules/content_search/widgets/directory_settings.dart
  27. 6
      win_text_editor/lib/modules/content_search/widgets/results_view.dart
  28. 8
      win_text_editor/lib/modules/content_search/widgets/search_settings.dart
  29. 2
      win_text_editor/lib/shared/base/base_view.dart
  30. 0
      win_text_editor/lib/shared/components/editor_toolbar.dart
  31. 4
      win_text_editor/lib/shared/components/file_explorer.dart
  32. 0
      win_text_editor/lib/shared/components/text_editor.dart
  33. 2
      win_text_editor/lib/shared/utils/file_utils.dart

33
win_text_editor/lib/app/modules/template_parser/template_parser_controller.dart

@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
import 'package:flutter/material.dart';
import 'package:win_text_editor/app/modules/template_parser/template_parser_service.dart';
class TemplateParserController with ChangeNotifier {
final TemplateParserService _service = TemplateParserService();
String _sourceContent = '';
String _parsedContent = '';
String _statusMessage = '准备就绪';
String get sourceContent => _sourceContent;
String get parsedContent => _parsedContent;
String get statusMessage => _statusMessage;
set sourceContent(String value) {
_sourceContent = value;
notifyListeners();
}
Future<void> parseTemplates() async {
try {
_statusMessage = '解析中...';
notifyListeners();
_parsedContent = await _service.parse(_sourceContent);
_statusMessage = '解析完成';
} catch (e) {
_statusMessage = '解析失败: $e';
} finally {
notifyListeners();
}
}
}

7
win_text_editor/lib/app/modules/template_parser/template_parser_service.dart

@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
class TemplateParserService {
Future<String> parse(String source) async {
//
await Future.delayed(const Duration(seconds: 1)); //
return 'Parssed: $source';
}
}

89
win_text_editor/lib/app/modules/template_parser/template_parser_view.dart

@ -1,89 +0,0 @@ @@ -1,89 +0,0 @@
import 'package:flutter/material.dart';
import 'package:win_text_editor/app/components/text_editor.dart';
import 'package:win_text_editor/app/modules/base_view.dart';
class TemplateParserView extends BaseView {
const TemplateParserView({super.key, required String tabId}) : super(tabId: tabId);
@override
TemplateParserViewState createState() => TemplateParserViewState();
}
class TemplateParserViewState extends BaseViewState {
final GlobalKey<TextEditorState> _editor1Key = GlobalKey();
final GlobalKey<TextEditorState> _editor2Key = GlobalKey();
//
void _setupFocusListeners() {}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_setupFocusListeners();
});
}
@override
void dispose() {
//_controller.dispose(); //
super.dispose();
}
@override
void onOpenFolder(String folderPath) {
//
print('Opening folder: $folderPath');
}
@override
void onOpenFile(String filePath) {
//
print('Opening file: $filePath');
}
// loadFile方法使用_activeEditorIndex
Future<void> loadFile(BuildContext context, String filePath) async {}
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: const BoxConstraints(minHeight: 400),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Flexible(
child: SizedBox(
height: MediaQuery.of(context).size.height / 2 - 100,
child: Container(
child: TextEditor(
key: _editor1Key,
tabId: '${widget.tabId}_1',
title: '源文本', //
),
),
),
),
Flexible(
child: SizedBox(
height: MediaQuery.of(context).size.height / 2 - 100,
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.transparent, width: 2.0),
),
child: TextEditor(
key: _editor2Key,
tabId: '${widget.tabId}_2',
title: '目标文本', //
),
),
),
),
],
),
),
);
}
}

0
win_text_editor/lib/app/models/file_node.dart → win_text_editor/lib/frame/models/file_node.dart

0
win_text_editor/lib/app/models/tab_model.dart → win_text_editor/lib/frame/models/tab_model.dart

2
win_text_editor/lib/app/providers/editor_provider.dart → win_text_editor/lib/frame/providers/editor_provider.dart

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'package:win_text_editor/frame/providers/logger.dart';
class EditorProvider with ChangeNotifier {
final List<EditorTab> _tabs = [];

6
win_text_editor/lib/app/providers/file_provider.dart → win_text_editor/lib/frame/providers/file_provider.dart

@ -2,9 +2,9 @@ import 'dart:io'; @@ -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/app/models/file_node.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'package:win_text_editor/app/services/file_service.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';
class FileProvider with ChangeNotifier {
List<FileNode> _fileNodes = [];

0
win_text_editor/lib/app/providers/logger.dart → win_text_editor/lib/frame/providers/logger.dart

2
win_text_editor/lib/app/services/file_service.dart → win_text_editor/lib/frame/services/file_service.dart

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import 'dart:io';
import 'package:win_text_editor/app/models/file_node.dart';
import 'package:win_text_editor/frame/models/file_node.dart';
class FileService {
///

0
win_text_editor/lib/app/services/syntax_service.dart → win_text_editor/lib/frame/services/syntax_service.dart

12
win_text_editor/lib/app/core/app_scaffold.dart → win_text_editor/lib/frame/widgets/app_scaffold.dart

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/core/file_explorer_pane.dart';
import 'package:win_text_editor/app/core/tab_manager.dart';
import 'package:win_text_editor/app/core/tab_view.dart';
import 'package:win_text_editor/app/menus/app_menu.dart';
import 'package:win_text_editor/app/providers/file_provider.dart';
import 'package:win_text_editor/app/core/console_panel.dart';
import 'package:win_text_editor/frame/file_explorer_pane.dart';
import 'package:win_text_editor/frame/tab_manager.dart';
import 'package:win_text_editor/frame/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/console_panel.dart';
class AppScaffold extends StatelessWidget {
const AppScaffold({super.key});

2
win_text_editor/lib/app/core/console_panel.dart → win_text_editor/lib/frame/widgets/console_panel.dart

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter/services.dart'; //
import 'package:win_text_editor/app/providers/logger.dart';
import 'package:win_text_editor/frame/providers/logger.dart';
class ConsolePanel extends StatefulWidget {
const ConsolePanel({super.key});

4
win_text_editor/lib/app/core/file_explorer_pane.dart → win_text_editor/lib/frame/widgets/file_explorer_pane.dart

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/providers/file_provider.dart';
import 'package:win_text_editor/app/components/file_explorer.dart';
import 'package:win_text_editor/frame/providers/file_provider.dart';
import 'package:win_text_editor/shared/components/file_explorer.dart';
class FileExplorerPane extends StatelessWidget {
final Function(String)? onFileDoubleTap;

6
win_text_editor/lib/app/core/tab_manager.dart → win_text_editor/lib/frame/widgets/tab_manager.dart

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:win_text_editor/app/models/tab_model.dart';
import 'package:win_text_editor/app/modules/base_view.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'package:win_text_editor/frame/models/tab_model.dart';
import 'package:win_text_editor/shared/base/base_view.dart';
import 'package:win_text_editor/frame/providers/logger.dart';
class TabManager with ChangeNotifier {
final List<AppTab> _tabs = [];

11
win_text_editor/lib/app/core/tab_view.dart → win_text_editor/lib/frame/widgets/tab_view.dart

@ -1,10 +1,9 @@ @@ -1,10 +1,9 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/components/text_editor.dart';
import 'package:win_text_editor/app/core/tab_manager.dart';
import 'package:win_text_editor/app/models/tab_model.dart';
import 'package:win_text_editor/app/modules/content_search/content_search_view.dart';
import 'package:win_text_editor/app/modules/template_parser/template_parser_view.dart';
import 'package:win_text_editor/shared/components/text_editor.dart';
import 'package:win_text_editor/frame/tab_manager.dart';
import 'package:win_text_editor/frame/models/tab_model.dart';
import 'package:win_text_editor/modules/content_search/widgets/content_search_view.dart';
class TabView extends StatelessWidget {
final List<AppTab> tabs;
@ -66,8 +65,6 @@ class TabView extends StatelessWidget { @@ -66,8 +65,6 @@ class TabView extends StatelessWidget {
//
Widget findActiveView(AppTab tab) {
switch (tab.type) {
case 'template_parser':
return TemplateParserView(tabId: tab.id);
case 'content_search':
return ContentSearchView(tabId: tab.id);
default:

4
win_text_editor/lib/main.dart

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/core/app_scaffold.dart';
import 'package:win_text_editor/frame/app_scaffold.dart';
import 'package:window_manager/window_manager.dart';
import 'app/providers/logger.dart'; //
import 'frame/providers/logger.dart'; //
void main() async {
WidgetsFlutterBinding.ensureInitialized();

2
win_text_editor/lib/app/menus/app_menu.dart → win_text_editor/lib/menus/app_menu.dart

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:win_text_editor/app/menus/menu_constants.dart';
import 'package:win_text_editor/menus/menu_constants.dart';
import 'menu_actions.dart';

6
win_text_editor/lib/app/menus/menu_actions.dart → win_text_editor/lib/menus/menu_actions.dart

@ -1,9 +1,9 @@ @@ -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/app/core/tab_manager.dart';
import 'package:win_text_editor/app/menus/menu_constants.dart';
import 'package:win_text_editor/app/providers/file_provider.dart';
import 'package:win_text_editor/frame/tab_manager.dart';
import 'package:win_text_editor/menus/menu_constants.dart';
import 'package:win_text_editor/frame/providers/file_provider.dart';
import 'package:collection/collection.dart';
import 'dart:io';

0
win_text_editor/lib/app/menus/menu_constants.dart → win_text_editor/lib/menus/menu_constants.dart

6
win_text_editor/lib/modules/content_search/models/match_result.dart

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
class MatchResult {
final int start;
final int end;
const MatchResult({required this.start, required this.end});
}

1
win_text_editor/lib/modules/content_search/models/search_mode.dart

@ -0,0 +1 @@ @@ -0,0 +1 @@
enum SearchMode { locate, count }

11
win_text_editor/lib/app/models/search_model.dart → win_text_editor/lib/modules/content_search/models/search_result.dart

@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
import 'package:win_text_editor/modules/content_search/models/match_result.dart';
class SearchResult {
final String filePath;
final int lineNumber;
@ -13,12 +15,3 @@ class SearchResult { @@ -13,12 +15,3 @@ class SearchResult {
required this.queryTerm,
});
}
class MatchResult {
final int start;
final int end;
const MatchResult({required this.start, required this.end});
}
enum SearchMode { locate, count }

9
win_text_editor/lib/app/modules/content_search/content_search_controller.dart → win_text_editor/lib/modules/content_search/providers/content_search_controller.dart

@ -7,10 +7,11 @@ import 'dart:io'; @@ -7,10 +7,11 @@ 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/app/core/tab_manager.dart';
import 'package:win_text_editor/app/models/search_model.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'content_search_service.dart';
import 'package:win_text_editor/frame/tab_manager.dart';
import 'package:win_text_editor/frame/providers/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';
import 'package:flutter_js/flutter_js.dart';
class ContentSearchController with ChangeNotifier {

6
win_text_editor/lib/app/modules/content_search/content_search_service.dart → win_text_editor/lib/modules/content_search/services/content_search_service.dart

@ -4,8 +4,10 @@ import 'dart:convert'; @@ -4,8 +4,10 @@ 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/app/models/search_model.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'package:win_text_editor/frame/providers/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';
class ContentSearchService {
///

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

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/modules/base_view.dart';
import 'package:win_text_editor/app/providers/logger.dart';
import 'content_search_controller.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 'directory_settings.dart';
import 'search_settings.dart';
import 'results_view.dart';

2
win_text_editor/lib/app/modules/content_search/directory_settings.dart → win_text_editor/lib/modules/content_search/widgets/directory_settings.dart

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/modules/content_search/content_search_controller.dart';
import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart';
class DirectorySettings extends StatefulWidget {
const DirectorySettings({super.key});

6
win_text_editor/lib/app/modules/content_search/results_view.dart → win_text_editor/lib/modules/content_search/widgets/results_view.dart

@ -2,11 +2,13 @@ import 'package:flutter/material.dart'; @@ -2,11 +2,13 @@ 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/app/models/search_model.dart';
import 'package:win_text_editor/app/modules/content_search/content_search_controller.dart';
import 'package:win_text_editor/modules/content_search/providers/content_search_controller.dart';
import 'package:file_picker/file_picker.dart';
import 'dart:io';
import 'package:win_text_editor/modules/content_search/models/search_mode.dart';
import 'package:win_text_editor/modules/content_search/models/search_result.dart';
class ResultsView extends StatelessWidget {
const ResultsView({super.key});

8
win_text_editor/lib/app/modules/content_search/search_settings.dart → win_text_editor/lib/modules/content_search/widgets/search_settings.dart

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/components/text_editor.dart';
import 'package:win_text_editor/app/models/search_model.dart';
import 'package:win_text_editor/app/modules/content_search/content_search_controller.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/models/search_mode.dart';
class SearchSettings extends StatelessWidget {
SearchSettings({super.key});
const SearchSettings({super.key});
@override
Widget build(BuildContext context) {

2
win_text_editor/lib/app/modules/base_view.dart → win_text_editor/lib/shared/base/base_view.dart

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/core/tab_manager.dart';
import 'package:win_text_editor/frame/tab_manager.dart';
// base_view.dart
abstract class BaseView extends StatefulWidget {

0
win_text_editor/lib/app/components/editor_toolbar.dart → win_text_editor/lib/shared/components/editor_toolbar.dart

4
win_text_editor/lib/app/components/file_explorer.dart → win_text_editor/lib/shared/components/file_explorer.dart

@ -2,8 +2,8 @@ import 'package:file_picker/file_picker.dart'; @@ -2,8 +2,8 @@ import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../models/file_node.dart';
import '../providers/file_provider.dart';
import '../../frame/models/file_node.dart';
import '../../frame/providers/file_provider.dart';
import 'dart:math';

0
win_text_editor/lib/app/components/text_editor.dart → win_text_editor/lib/shared/components/text_editor.dart

2
win_text_editor/lib/app/utils/file_utils.dart → win_text_editor/lib/shared/utils/file_utils.dart

@ -3,7 +3,7 @@ import 'dart:async'; @@ -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/app/providers/logger.dart';
import 'package:win_text_editor/frame/providers/logger.dart';
class FileUtils {
static Future<String?> pickFile(BuildContext context) async {
Loading…
Cancel
Save