我在 Flutter 的每个 Text 小部件中使用 textScaleFactor,但如果用户从设备设置更改显示或字体大小。它会更改整个应用程序的所有文本小部件的大小。
有什么办法可以防止在主函数、MaterialApp 或 ThemeData 的设备设置中监听文本大小?
我不想使用 MediaQuery,因为我的应用非常大,而且我现在无法更改每个文本小部件。
谢谢
答案 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'),
);
这会将整个应用程序中的系统文本比例因子覆盖为您选择的因子。
但这是一个非常糟糕的做法。您不应该依赖覆盖系统/可访问性设置来修复您的 ui。有很多设备有很多外形、屏幕分辨率、密度等。解决这个问题的正确方法是创建一个响应式 ui,它可以很好地适应不同的屏幕和设置。一个好的起点是用于响应式 ui 的 official flutter site 和 auto_size_text 包,它可以为您节省缩放文本的很多麻烦。