如何从textScaleFactor迁移至TextScaler.scale?
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
相关产品推荐
相关产品推荐

