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
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(), |
|
], |
|
), |
|
), |
|
); |
|
} |
|
}
|
|
|