Flutter桌面分屏插件desktop_split_pane的使用
Flutter桌面分屏插件desktop_split_pane的使用
desktop_split_pane
一个支持热重载的 Flutter 桌面和 Web 分屏组件。
特性
- 支持热重载(不像旧版的
resizable_widget
) - 动画缩放
- 应用窗口调整大小时自动缩放
- 可以自定义分隔条厚度和颜色
- 状态公开以便支持显式小部件重建(只需调用状态上的
rebuild()
方法) - 运行时可以移除和添加小部件而无需热重启
- 此功能非常适合展示侧边栏并在以后隐藏它们
- 添加了
onResize(widths/heights)
函数来监听缩放事件
开始使用
在项目中添加依赖:
flutter pub add desktop_split_pane
使用方法
以下是一个完整的示例,展示了如何使用 desktop_split_pane
插件创建一个水平和垂直分屏布局。
import 'package:desktop_split_pane/desktop_split_pane.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: LayoutBuilder(
builder: (context, constraints) => HorizontalSplitPane(
constraints: constraints,
separatorColor: Colors.black,
separatorThickness: 4.0,
fractions: [0.2, 0.2, 0.2, 0.4],
children: [
Container(
color: Colors.blue,
),
Container(
color: Colors.pinkAccent,
),
Container(
color: Colors.purpleAccent,
),
VerticalSplitPane(
constraints: constraints,
separatorColor: Colors.white,
separatorThickness: 4.0,
children: [
Container(
color: Colors.grey,
),
Container(
color: Colors.greenAccent,
),
Container(
color: Colors.teal,
),
],
),
],
),
),
),
);
}
}
代码解析
-
导入库
import 'package:desktop_split_pane/desktop_split_pane.dart'; import 'package:flutter/material.dart';
-
主应用入口
void main() { runApp(const App()); }
-
构建MaterialApp
class App extends StatelessWidget { const App({super.key}); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( body: LayoutBuilder( builder: (context, constraints) => HorizontalSplitPane( constraints: constraints, separatorColor: Colors.black, separatorThickness: 4.0, fractions: [0.2, 0.2, 0.2, 0.4], children: [ // 子容器配置 ], ), ), ), ); } }
-
水平分屏
HorizontalSplitPane( constraints: constraints, separatorColor: Colors.black, separatorThickness: 4.0, fractions: [0.2, 0.2, 0.2, 0.4], children: [ Container( color: Colors.blue, ), Container( color: Colors.pinkAccent, ), Container( color: Colors.purpleAccent, ), VerticalSplitPane( constraints: constraints, separatorColor: Colors.white, separatorThickness: 4.0, children: [ Container( color: Colors.grey, ), Container( color: Colors.greenAccent, ), Container( color: Colors.teal, ), ], ), ], )
-
垂直分屏
VerticalSplitPane( constraints: constraints, separatorColor: Colors.white, separatorThickness: 4.0, children: [ Container( color: Colors.grey, ), Container( color: Colors.greenAccent, ), Container( color: Colors.teal, ), ], )
更多关于Flutter桌面分屏插件desktop_split_pane的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter桌面分屏插件desktop_split_pane的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
desktop_split_pane
是一个用于 Flutter 桌面应用程序的插件,它允许你在应用程序中创建可调整大小的分屏布局。这个插件特别适合需要在同一窗口中显示多个视图的应用程序,例如代码编辑器、文件管理器或任何需要并排显示内容的场景。
安装
首先,你需要在 pubspec.yaml
文件中添加 desktop_split_pane
插件的依赖:
dependencies:
flutter:
sdk: flutter
desktop_split_pane: ^0.1.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
基本用法
desktop_split_pane
提供了一个 SplitPane
组件,你可以使用它来创建分屏布局。以下是一个简单的示例,展示如何在 Flutter 桌面应用程序中使用 desktop_split_pane
:
import 'package:flutter/material.dart';
import 'package:desktop_split_pane/desktop_split_pane.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Desktop Split Pane Example'),
),
body: SplitPane(
initialWeights: [0.3, 0.7], // 设置初始分割比例
children: [
Container(
color: Colors.blue,
child: Center(child: Text('Left Pane')),
),
Container(
color: Colors.green,
child: Center(child: Text('Right Pane')),
),
],
),
),
);
}
}
参数说明
initialWeights
: 一个包含两个浮点数的列表,表示两个子组件的初始宽度比例。例如,[0.3, 0.7]
表示左侧占 30%,右侧占 70%。children
: 一个包含两个Widget
的列表,分别表示左侧和右侧的内容。
自定义分隔条
你可以通过 divider
参数来自定义分隔条的样式。例如:
SplitPane(
initialWeights: [0.3, 0.7],
divider: Divider(color: Colors.red, thickness: 2.0),
children: [
Container(
color: Colors.blue,
child: Center(child: Text('Left Pane')),
),
Container(
color: Colors.green,
child: Center(child: Text('Right Pane')),
),
],
)
响应式布局
SplitPane
可以与其他 Flutter 布局组件结合使用,以实现更复杂的布局。例如,你可以在 SplitPane
内部嵌套另一个 SplitPane
,以实现多级分屏布局。
SplitPane(
initialWeights: [0.3, 0.7],
children: [
SplitPane(
initialWeights: [0.5, 0.5],
axis: Axis.vertical, // 垂直分割
children: [
Container(
color: Colors.blue,
child: Center(child: Text('Top Left Pane')),
),
Container(
color: Colors.purple,
child: Center(child: Text('Bottom Left Pane')),
),
],
),
Container(
color: Colors.green,
child: Center(child: Text('Right Pane')),
),
],
)