防止更改基于文本大小的设备屏幕大小 Flutter

时间:2021-03-07 11:42:43

标签: flutter size screen

我在 Flutter 的每个 Text 小部件中使用 textScaleFactor,但如果用户从设备设置更改显示或字体大小。它会更改整个应用程序的所有文本小部件的大小。

有什么办法可以防止在主函数、MaterialApp 或 ThemeData 的设备设置中监听文本大小?

我不想使用 MediaQuery,因为我的应用非常大,而且我现在无法更改每个文本小部件。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以像这样覆盖系统提供的文本比例因子:

MaterialApp(
  builder:  (BuildContext context, Widget child) {
    return MediaQuery(
      data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0, ), //set desired text scale factor here
      child: child,
    );
  },
  title: 'Flutter Demo',
  theme: ThemeData(
    primarySwatch: Colors.blue,
  ),
  home: MyHomePage(title: 'Flutter Demo Home Page'),
);

Source

这会将整个应用程序中的系统文本比例因子覆盖为您选择的因子。

但这是一个非常糟糕的做法。您不应该依赖覆盖系统/可访问性设置来修复您的 ui。有很多设备有很多外形、屏幕分辨率、密度等。解决这个问题的正确方法是创建一个响应式 ui,它可以很好地适应不同的屏幕和设置。一个好的起点是用于响应式 ui 的 official flutter siteauto_size_text 包,它可以为您节省缩放文本的很多麻烦。