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.
 
 
 

45 lines
1.4 KiB

import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/app/menus/menu_constants.dart';
import 'package:win_text_editor/app/providers/file_provider.dart';
import 'dart:io';
import '../models/editor_tab.dart';
import '../providers/editor_provider.dart';
import '../widgets/template_parser.dart'; // 确保导入了TemplateParser
class MenuActions {
static Future<void> handleMenuAction(String value, BuildContext context) async {
switch (value) {
case MenuConstants.openFolder:
await _openFolder(context);
break;
case MenuConstants.templateParser:
_openTemplateParser(context);
break;
case MenuConstants.exit:
_exitApplication();
break;
// 其他菜单项可以在这里添加处理逻辑
}
}
static Future<void> _openFolder(BuildContext context) async {
final fileProvider = Provider.of<FileProvider>(context, listen: false);
final String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
if (selectedDirectory != null) {
await fileProvider.loadDirectory(selectedDirectory);
}
}
static void _openTemplateParser(BuildContext context) {
final editorProvider = Provider.of<EditorProvider>(context, listen: false);
editorProvider.addTemplateParserTab();
}
static void _exitApplication() {
exit(0);
}
}