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

如何从textScaleFactor迁移至TextScaler.scale?

关于ButtonStyleButton.scaledPadding适配TextScaler的问题

textScaleFactor近期已被Flutter官方弃用,官方建议改用TextScaler.scale(double fontSize)接口,但并非所有接收textScaleFactor的场景都完成了新用法适配。比如ButtonStyleButton.scaledPadding方法仍需要传入textScaleFactor参数,请问此时调用TextScaler.scale应该传入何种fontSize值?

旧代码实现

ButtonStyleButton.scaledPadding(
  const EdgeInsets.symmetric(horizontal: 16),
  const EdgeInsets.symmetric(horizontal: 8),
  const EdgeInsets.symmetric(horizontal: 4),
  MediaQuery.maybeOf(context)?.textScaleFactor,
);

新代码待补全参数

ButtonStyleButton.scaledPadding(
  const EdgeInsets.symmetric(horizontal: 16),
  const EdgeInsets.symmetric(horizontal: 8),
  const EdgeInsets.symmetric(horizontal: 4),
  MediaQuery.maybeOf(context)?.textScaler.scale(??),
);

解决方案

应该传入1.0作为fontSize参数。因为TextScaler.scale(1.0)的返回值等价于原接口中的textScaleFactor——它代表的是相对于基准字号(1.0)的缩放比例,刚好匹配旧参数的含义,能保证scaledPadding的计算逻辑和之前完全一致。

补全后的完整新代码:

ButtonStyleButton.scaledPadding(
  const EdgeInsets.symmetric(horizontal: 16),
  const EdgeInsets.symmetric(horizontal: 8),
  const EdgeInsets.symmetric(horizontal: 4),
  MediaQuery.maybeOf(context)?.textScaler.scale(1.0),
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:42:04