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.
 
 
 

54 lines
1.9 KiB

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:win_text_editor/frame/widgets/file_explorer_pane.dart';
import 'package:win_text_editor/frame/widgets/tab_manager.dart';
import 'package:win_text_editor/frame/widgets/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/widgets/console_panel.dart';
class AppScaffold extends StatelessWidget {
const AppScaffold({super.key});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => FileProvider()),
ChangeNotifierProvider(create: (_) => TabManager()),
],
child: Scaffold(
backgroundColor: Colors.grey[100],
body: Column(
children: [
const AppMenu(),
Expanded(
child: Row(
children: [
// 左侧文件树 - 传递双击事件回调
Consumer<TabManager>(
builder: (context, tabManager, child) {
return FileExplorerPane(
onFileDoubleTap: (path) => tabManager.handleFileDoubleTap(path),
onFolderDoubleTap: (path) => tabManager.handleFolderDoubleTap(path),
);
},
),
// 主内容区
Expanded(
child: Consumer<TabManager>(
builder:
(_, manager, __) =>
TabView(tabs: manager.tabs, currentTabId: manager.activeTabId),
),
),
],
),
),
const ConsolePanel(),
],
),
),
);
}
}