You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用窗口大小设置问题:window_manager无效果求助

问题:Arch Linux + Gnome桌面下window_manager无法设置Flutter窗口尺寸

开发计算器应用时,希望窗口打开时高度大于宽度,使用window_manager包配置窗口参数后,仅titleBarStyle: TitleBarStyle.hidden生效,窗口大小、居中设置完全无效,环境为Arch Linux搭配Gnome桌面。

以下是当前使用的核心代码及依赖配置:

核心代码(main.dart)

// ignore_for_file: non_constant_identifier_names

import 'package:window_manager/window_manager.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await windowManager.ensureInitialized();
  WindowOptions windowOptions = const WindowOptions(
    size: Size(410, 600),
    center: true,
    backgroundColor: Colors.transparent,
    skipTaskbar: false,
    titleBarStyle: TitleBarStyle.hidden,
  );
  windowManager.waitUntilReadyToShow(windowOptions, () async {
    await windowManager.show();
    await windowManager.focus();
  });
  runApp(const MyApp());
}

依赖配置(pubspec.yaml)

dependencies:
  window_manager:
    git:
      url: https://github.com/leanflutter/window_manager.git
      ref: main

解决方案

1. 切换到window_manager稳定版

当前使用的是git主分支的开发版,可能存在Gnome桌面兼容性问题。替换为pub.dev的稳定版本:
修改pubspec.yaml:

dependencies:
  window_manager: ^0.3.8  # 可替换为最新稳定版本

执行flutter pub get更新依赖后重新运行应用。

2. 规避Gnome窗口缩放干扰

Gnome的系统缩放比例会影响Flutter窗口的尺寸计算:

  • 先尝试将系统设置中的缩放比例调至100%,测试窗口尺寸是否生效
  • 若需要保留缩放,可通过环境变量强制Flutter使用指定缩放启动:
GDK_SCALE=1 flutter run

3. 手动在回调中设置窗口参数

将窗口尺寸和居中设置移到waitUntilReadyToShow回调中手动调用,替代初始化时的WindowOptions:

windowManager.waitUntilReadyToShow(windowOptions, () async {
  await windowManager.setSize(const Size(410, 600));
  await windowManager.center();
  await windowManager.show();
  await windowManager.focus();
});

4. 通过Gnome Tweaks强制窗口规则

如果以上方法都无效,直接通过系统层面强制设置窗口尺寸:

  1. 安装Gnome Tweaks:
sudo pacman -S gnome-tweaks
  1. 打开Gnome Tweaks,进入「Windows」选项卡,找到「Window Size Rules」
  2. 获取应用ID:运行xprop WM_CLASS命令,点击你的Flutter窗口,输出中的第二个字符串即为应用ID
  3. 添加应用ID,设置宽度为410,高度为600,保存后重启应用

5. 重新构建应用

清理缓存后重新构建,确保权限和配置生效:

flutter clean
flutter build linux
./build/linux/x64/release/bundle/你的应用名称

内容的提问来源于stack exchange,提问作者CRL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:35:09