升级flutter_screenutil 5.0.0+2后ScreenUtil().setSp(22)失效问题咨询
问题原因及解决方案
配置存在的两处错误/遗漏项
- 未对齐新旧版本的
designSize配置:旧版本调用ScreenUtil.init(context)时如果不传designSize参数,默认使用的设计稿尺寸是Size(750, 1334),你新版本直接配置为Size(1080, 1920),设计稿基准宽度变大,相同setSp数值换算后的实际字体大小会成比例缩小,这是字体异常变小的核心原因。 - 未继承旧版本的
allowFontScaling配置:旧版本你明确设置了allowFontScaling: false关闭字体跟随系统缩放,新版本ScreenUtilInit默认该参数为true,会额外乘以系统字体缩放系数,进一步缩小了字体大小。
修复操作步骤
- 对齐设计稿基准尺寸:如果你的设计稿实际是750px宽度,就把
designSize改回Size(750, 1334);如果确实是1080px宽度的设计稿,你需要把所有setSp的数值按1.44倍(1080/750)放大,比如原来的22改成≈32即可。 - 初始化时添加
allowFontScaling参数关闭字体缩放,和旧版本逻辑保持一致,修改后的初始化代码参考如下:
Widget build(BuildContext context) { return ScreenUtilInit( designSize: Size(750, 1334), // 替换为你实际使用的设计稿尺寸,和旧版本对齐 allowFontScaling: false, builder: () => Scaffold(... }
- (可选兼容方案)如果你不想批量修改已有的
setSp数值,也可以直接在ScreenUtilInit中添加textScaleFactor: 1参数强制覆盖缩放逻辑。
修复后重新运行项目,setSp返回值就会和旧版本保持一致,字体大小即可恢复正常。
内容的提问来源于stack exchange,提问作者Savan Thakkar
相关产品推荐
相关产品推荐

