如何在Flutter中支持文本大小的可访问性,例如Android sp大小和iOS Dynamic Type

Sur*_*gch 4 accessibility font-size flutter

在Android中,您可以使用与比例无关的像素(sp)来设置字体大小,以考虑在设置中选择的用户字体大小首选项

android:textSize="26sp"
Run Code Online (Sandbox Code Playgroud)

在iOS中,您可以使用动态类型来实现类似目的。

label.font = UIFont.preferredFont(forTextStyle: .body)
label.adjustsFontForContentSizeCategory = true
Run Code Online (Sandbox Code Playgroud)

您如何在Flutter中做同样的事情?

Sur*_*gch 5

Flutter 默认内置的较大字体具有辅助功能支持。您可以通过指定来覆盖此行为textScaleFactor,Flutter通常使用该值来应用用户选择的文本大小。

您可以通过比较两个Text小部件(第二个控件的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),
    ],
  );
}
Run Code Online (Sandbox Code Playgroud)

安卓系统

在Android设置中,“ 辅助功能”>“字体大小”选择最小尺寸。

在此处输入图片说明

再次进行选择最大的尺寸。

在此处输入图片说明

请注意,第一个“文本”窗口小部件文本更改了大小,但是第二个具有textScaleFactor覆盖的文本没有更改。

的iOS

在iOS中,转到“设置”>“常规”>“辅助功能”>“较大的文本”,然后选择最小的选项。

在此处输入图片说明

并再次使用最大设置:

在此处输入图片说明

  • @JoeLapp,您仍然可以通过设置文本的样式属性(`style:TextStyle(fontSize:30)`)来正常设置文本大小。这允许您控制文本大小,同时保持可访问性。 (2认同)
  • 我想我找到了。您可以使用 MediaQuery.of(context).textScaleFactor (2认同)