如何支持 Flutter 中的文本大小可访问性,例如 Android sp size 和 iOS Dynamic Type
How to support text size accessibility in Flutter like Android sp size and iOS Dynamic Type
在 Android 中,您可以使用与比例无关的像素 (sp) 设置字体大小,以考虑到在设置中选择的 user font size preferences。
android:textSize="26sp"
在 iOS 中,您可以使用 Dynamic Type 来做类似的事情。
label.font = UIFont.preferredFont(forTextStyle: .body)
label.adjustsFontForContentSizeCategory = true
你如何在 Flutter 中做同样的事情?
Flutter 默认内置 accessibility support for larger fonts。您可以通过指定 textScaleFactor
来覆盖此行为,Flutter 通常使用它来应用用户选择的文本大小。
您可以通过比较两个文本小部件来测试它,第二个 textScaleFactor
设置为 1.0
。它们的默认字体大小都是 14.0 逻辑像素。
Widget _myWidget() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Some sample text'),
Text('Some sample text', textScaleFactor: 1.0),
],
);
}
你可以这样得到当前的文本比例因子:
final scale = MediaQuery.of(context).textScaleFactor;
Android
在 Android 设置中 辅助功能 > 字体大小 选择最小的大小。
再做一次,选择最大的尺寸。
请注意,第一个文本小部件文本更改了大小,但第二个具有 textScaleFactor
覆盖的小部件没有。
iOS
在 iOS 中转到 设置 > 通用 > 辅助功能 > 较大的文本 并选择最小的选项。
再次使用最大设置:
在 Android 中,您可以使用与比例无关的像素 (sp) 设置字体大小,以考虑到在设置中选择的 user font size preferences。
android:textSize="26sp"
在 iOS 中,您可以使用 Dynamic Type 来做类似的事情。
label.font = UIFont.preferredFont(forTextStyle: .body)
label.adjustsFontForContentSizeCategory = true
你如何在 Flutter 中做同样的事情?
Flutter 默认内置 accessibility support for larger fonts。您可以通过指定 textScaleFactor
来覆盖此行为,Flutter 通常使用它来应用用户选择的文本大小。
您可以通过比较两个文本小部件来测试它,第二个 textScaleFactor
设置为 1.0
。它们的默认字体大小都是 14.0 逻辑像素。
Widget _myWidget() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Some sample text'),
Text('Some sample text', textScaleFactor: 1.0),
],
);
}
你可以这样得到当前的文本比例因子:
final scale = MediaQuery.of(context).textScaleFactor;
Android
在 Android 设置中 辅助功能 > 字体大小 选择最小的大小。
再做一次,选择最大的尺寸。
请注意,第一个文本小部件文本更改了大小,但第二个具有 textScaleFactor
覆盖的小部件没有。
iOS
在 iOS 中转到 设置 > 通用 > 辅助功能 > 较大的文本 并选择最小的选项。
再次使用最大设置: