桌面端窗口
使用window_manager
在项目中使用下面的命令来安装:
flutter pub add window_manager
配置window_manager
注意:不同系统需要进行不同的配置,可以点击这里查看
在main.dart
中这样修改主函数:
void main() async {
await windowManager.ensureInitialized();
WindowOptions windowOptions = WindowOptions(
size: Size(800, 600),
center: true,
backgroundColor: Colors.transparent,
skipTaskbar: false,
titleBarStyle: TitleBarStyle.hidden,
);
windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
await windowManager.focus();
});
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
// 注意添加with WindowListener
class _MyAppState extends State<MyApp> with WindowListener {
@override
void initState() {
super.initState();
// 在这里添加监听
windowManager.addListener(this);
}
@override
void dispose() {
// 在这里销毁
windowManager.removeListener(this);
super.dispose();
}
}
添加拖动区域
因为使用window_manager
之后,会导致整个窗口无法拖动,可以使用下面的内容来设置一个拖动区域
// 注意,外层使用Stack包裹,保证不会影响到其他Widget
Positioned(
child: Container(
color: Colors.transparent,
// 设置可以自定义的高度
height: 30,
child: DragToMoveArea(
child: Container()
),
),
),
添加Windows窗口按钮
Row(
children: [
WindowCaptionButton.minimize(
onPressed: // 添加最小化窗口操作
),
isMax ? // 注意设置isMax参数
WindowCaptionButton.maximize(
onPressed: // 添加最大化窗口操作
) : WindowCaptionButton.unmaximize(
onPressed: // 添加还原窗口操作
),
WindowCaptionButton.close(
onPressed: // 添加关闭窗口操作
),
]
)