flutter下的webview适配rem问题

项目背景

近期承接了一个移动应用开发项目,客户已使用Vue.js独立开发了前端页面,现需要将其封装为原生应用。经过技术评估,我们决定采用Flutter框架作为应用容器,通过WebView加载客户开发的Vue页面。

技术问题

在测试阶段发现,部分测试设备上页面布局出现异常。经排查发现,客户的Vue页面采用了rem单位进行响应式布局,其实现方式是在页面初始化时动态计算并设置根元素的font-size,后续所有尺寸均基于rem单位。

问题排查过程

  1. 首先尝试通过Gemini CLI工具分析问题,但提供的多个解决方案均未奏效。
  2. 转为手动调试,通过日志发现font-size计算值异常,导致布局乱。
  3. 采用临时方案:注释动态计算逻辑,硬编码font-size值,测试确认布局恢复正常。
  4. 进一步分析发现,问题根源在于测试设备将系统字体大小设置为"中"等尺寸。
  5. 验证方案:将系统字体恢复默认后,代码回退到原始版本,布局显示正常。

最终解决方案

考虑到不应限制用户调整系统字体大小的需求,我们决定在应用层强制使用默认字体设置:

Dart 复制代码
return MediaQuery(
    data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
    child: child!,
);

if (_controller.platform is AndroidWebViewController) {
    (_controller.platform as AndroidWebViewController).setTextZoom(100);
}
相关推荐
ujainu24 分钟前
Flutter + OpenHarmony 游戏开发进阶:粒子系统初探——简易爆炸与得分飞字
flutter·游戏·openharmony
2501_9444480025 分钟前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
灰灰勇闯IT9 小时前
Flutter for OpenHarmony:自定义 Paint 绘图 —— 释放 Canvas 的创造力
flutter
2601_9498333910 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
牛马11112 小时前
Flutter OverlayEntry
flutter
2603_9494621012 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
2601_9499757914 小时前
Flutter for OpenHarmony艺考真题题库+帮助中心实现
flutter
子春一16 小时前
Flutter for OpenHarmony:构建一个 Flutter 井字棋游戏,深入解析状态驱动逻辑、胜利判定与极简交互设计
flutter·游戏·交互
雨季66617 小时前
Flutter 三端应用实战:OpenHarmony “极简手势轨迹球”——指尖与屏幕的诗意对话
开发语言·javascript·flutter
ujainu17 小时前
Flutter + OpenHarmony 游戏开发进阶:CustomPainter 手绘游戏世界——从球体到轨道
flutter·游戏·信息可视化·openharmony