You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:win_text_editor/app/core/tab_manager.dart';
|
|
|
|
|
|
|
|
// 修改后的base_view.dart
|
|
|
|
abstract class BaseView extends StatefulWidget {
|
|
|
|
final String tabId;
|
|
|
|
const BaseView({super.key, required this.tabId});
|
|
|
|
|
|
|
|
@override
|
|
|
|
BaseViewState createState();
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class BaseViewState<T extends BaseView> extends State<T> {
|
|
|
|
late final TabManager tabManager;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
tabManager = Provider.of<TabManager>(context, listen: false);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void didChangeDependencies() {
|
|
|
|
super.didChangeDependencies();
|
|
|
|
if (tabManager.activeTabId == widget.tabId) {
|
|
|
|
tabManager.setActiveViewState(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
// 清理注册
|
|
|
|
tabManager.setActiveViewState(null);
|
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
// 抽象方法改为在State中定义
|
|
|
|
void onOpenFolder(String folderPath);
|
|
|
|
void onOpenFile(String filePath);
|
|
|
|
}
|