如何为Flutter Windows Debug应用单独设置显示缩放比例
Flutter Windows 应用单独设置100%缩放的实现方法
有两类可落地的方案,按需选择即可:
方案1:无需修改项目代码,仅本地Debug环境生效
这个方案不会改动项目代码,不影响其他协作者,适合仅本地调试时使用:
- 进入项目的Debug编译产物目录,路径为
build\windows\x64\Debug\,找到和项目同名的.exe主程序文件 - 右键该exe文件,选择「属性」,切换到「兼容性」标签页
- 点击「更改高DPI设置」按钮,在弹出窗口中勾选「替代高DPI缩放行为」
- 下拉选择缩放执行方为「系统」,点击确定保存设置即可
- 后续不管是直接双击打开exe,还是通过
flutter run启动Debug版应用,都会固定按100%缩放渲染,不会跟随系统150%的全局缩放
方案2:修改项目配置,所有编译版本固定100%缩放
如果需要Debug、Release等所有编译出的Windows版本都固定100%缩放,可以修改Windows Runner的DPI感知配置:
- 打开项目路径下的
windows\runner\main.cpp文件 - 找到配置DPI感知上下文的代码段,默认会传入
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2参数,代表跟随系统单显示器DPI自动缩放 - 将该参数替换为
DPI_AWARENESS_CONTEXT_UNAWARE,即标记应用不感知系统DPI缩放,始终以100%比例渲染 - 保存文件后重新编译运行即可生效,修改后的核心代码示例:
if (SetProcessDpiAwarenessContext) { // 替换原有DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2参数 dpiAwarenessSuccess = SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE); }
注:该配置下系统会自动处理窗口的缩放适配,不会出现UI错位问题,仅Flutter应用内的控件、文字渲染比例固定为100%,不受系统全局缩放影响。
内容的提问来源于stack exchange,提问作者Vishnubly
相关产品推荐
相关产品推荐

