Compare commits
No commits in common. '63ddcf865f5a36c28929e0e8b8e2e1365d89ffea' and 'a918c9021aaa19f376d77f9b9104e9a956177578' have entirely different histories.
63ddcf865f
...
a918c9021a
28 changed files with 174 additions and 422 deletions
@ -1,2 +1,2 @@ |
|||||||
outline_name_black_list: |
outline_name_black_list: |
||||||
- 历史,日志,名称,比例,数量,金额,次数,属性,对应,分类,姓名,单位,总数,行使,子项,占比,记录,列表,目标,字段,字符串,动作,方式 |
- 历史,日志,名称,比例,数量,金额,次数,属性,对应,分类,姓名,单位,总数,行使,子项,占比,记录,列表,目标,字段,字符串,动作 |
@ -0,0 +1,13 @@ |
|||||||
|
import 'package:win_text_editor/shared/base/base_content_controller.dart'; |
||||||
|
|
||||||
|
class OutlineController extends BaseContentController { |
||||||
|
@override |
||||||
|
void onOpenFile(String filePath) { |
||||||
|
// TODO: implement onOpenFile |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
void onOpenFolder(String folderPath) { |
||||||
|
// TODO: implement onOpenFolder |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,73 @@ |
|||||||
|
import 'package:flutter/material.dart'; |
||||||
|
import 'package:provider/provider.dart'; |
||||||
|
import 'package:win_text_editor/framework/controllers/tab_items_controller.dart'; |
||||||
|
import 'package:win_text_editor/modules/outline/controllers/outline_controller.dart'; |
||||||
|
import 'package:win_text_editor/modules/outline/controllers/outline_provider.dart'; // 新增导入 |
||||||
|
import 'package:win_text_editor/modules/outline/widgets/outline_explorer.dart'; |
||||||
|
|
||||||
|
class OutlineView extends StatefulWidget { |
||||||
|
final String tabId; |
||||||
|
const OutlineView({super.key, required this.tabId}); |
||||||
|
|
||||||
|
@override |
||||||
|
State<OutlineView> createState() => _OutlineViewState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _OutlineViewState extends State<OutlineView> { |
||||||
|
late final OutlineController _controller; |
||||||
|
late final OutlineProvider _outlineProvider; // 新增OutlineProvider实例 |
||||||
|
bool _isControllerFromTabManager = false; |
||||||
|
|
||||||
|
get tabManager => Provider.of<TabItemsController>(context, listen: false); |
||||||
|
|
||||||
|
@override |
||||||
|
void initState() { |
||||||
|
super.initState(); |
||||||
|
|
||||||
|
_outlineProvider = OutlineProvider(); // 初始化OutlineProvider |
||||||
|
|
||||||
|
final controllerFromManager = tabManager.getController(widget.tabId); |
||||||
|
if (controllerFromManager != null) { |
||||||
|
_controller = controllerFromManager; |
||||||
|
_isControllerFromTabManager = true; |
||||||
|
} else { |
||||||
|
_controller = OutlineController(); |
||||||
|
_isControllerFromTabManager = false; |
||||||
|
tabManager.registerController(widget.tabId, _controller); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
void dispose() { |
||||||
|
if (!_isControllerFromTabManager) { |
||||||
|
_controller.dispose(); |
||||||
|
} |
||||||
|
_outlineProvider.dispose(); // 确保销毁provider |
||||||
|
super.dispose(); |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
Widget build(BuildContext context) { |
||||||
|
return ChangeNotifierProvider<OutlineProvider>.value( |
||||||
|
value: _outlineProvider, // 提供OutlineProvider |
||||||
|
child: Row( |
||||||
|
children: [ |
||||||
|
const VerticalDivider(width: 1), |
||||||
|
SizedBox( |
||||||
|
width: 300, |
||||||
|
child: OutlineExplorer( |
||||||
|
onFileDoubleTap: (path) { |
||||||
|
// 处理文件双击 |
||||||
|
}, |
||||||
|
onFolderDoubleTap: (path) { |
||||||
|
// 处理文件夹双击 |
||||||
|
}, |
||||||
|
), |
||||||
|
), |
||||||
|
const VerticalDivider(width: 1), |
||||||
|
const Expanded(child: Center(child: Text('大纲'))), |
||||||
|
], |
||||||
|
), |
||||||
|
); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue