我正在努力使我的应用程序对于为其设备启用大文本辅助功能的用户来说是可读的。我知道文本小部件有一个参数“textScaler”(以前称为textScaleFactor),但是,是否有必要为每个文本小部件定义此textScaler?
我尝试使用 MediaQuery 包装 Material 应用程序,并在其数据中为 textScaler 分配值 1.2,但是,这会消除用户使用键盘的能力。
@override
Widget build(BuildContext context) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(
textScaler: const TextScaler.linear(1.2),
),
child: MaterialApp.router(...
您可以使用 MaterialApp 的 builder 属性全局定义 textScaler。这种方法可确保您修改 MediaQuery 数据而不会丢失键盘输入等基本信息。具体方法如下:
@override
Widget build(BuildContext context) {
return MaterialApp(
builder: (context, child) {
final mediaQuery = MediaQuery.of(context);
return MediaQuery(
data: mediaQuery.copyWith(
textScaler: const TextScaler.linear(1.2),
),
child: child!,
);
},
home: MyHomePage(),
// other properties...
);
}
说明:
注意: 避免在构建器之外直接使用 MediaQuery 包装 MaterialApp,因为这可能会导致丢失重要的 MediaQuery 信息,影响屏幕键盘等功能。