24 changed files with 198 additions and 154 deletions
@ -1,2 +1,2 @@ |
|||||||
outline_name_black_list: |
outline_name_black_list: |
||||||
- 历史,日志,名称,比例,数量,金额,次数,属性,对应,分类,姓名,单位,总数,行使,子项,占比,记录,列表,目标,字段,字符串,动作 |
- 历史,日志,名称,比例,数量,金额,次数,属性,对应,分类,姓名,单位,总数,行使,子项,占比,记录,列表,目标,字段,字符串,动作,方式 |
@ -1,13 +0,0 @@ |
|||||||
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 |
|
||||||
} |
|
||||||
} |
|
@ -1,73 +0,0 @@ |
|||||||
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