Flutter 中 TextField 的 TextScaleFactor?

TextScaleFactor for TextField in Flutter?

想知道有没有办法在 flutter 中控制 TextField 小部件的 textscalefactor。基本上,当用户在其设备辅助功能设置中增加 font/text 大小时,我想限制文本字段不会变得太大。

谢谢。

您可以用 MediaQuery 和自定义 textScaleFactor

包装它
Widget build(BuildContext context) {
  final mqData = MediaQuery.of(context);
  final mqDataNew = mqData.copyWith(textScaleFactor: mqData.textScaleFactor > 5.0 ? 5.0 : mqData.textScaleFactor)
  return MediaQuery(data: mqDataNew, child: TextField());
}

TextField 不需要是 MediaQuery 的直系子代。

您可以为整个应用的 textScaleFactor 设置下限和上限。

return MaterialApp(
   builder: (context, child) {
      const lowerLimit = 1.0;
      const upperLimit = 1.2;

      final mediaQueryData = MediaQuery.of(context);          
      final scale = mediaQueryData.textScaleFactor.clamp(lowerLimit, upperLimit);
      return MediaQuery(
          child: child,
          data: MediaQuery.of(context).copyWith(textScaleFactor: scale),
      );
   },
);