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