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),
);
},
);
想知道有没有办法在 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),
);
},
);