mik*_*ike 1 size screen flutter
我在 Flutter 的每个 Text 小部件中使用 textScaleFactor,但如果用户从设备设置更改显示或字体大小。它会更改整个应用程序的所有文本小部件的大小。
有什么办法可以阻止从主函数、MaterialApp 或 ThemeData 收听设备设置中的文本大小?
我不想使用 MediaQuery,因为我的应用程序非常大,我现在无法更改每个文本小部件。
谢谢
小智 5
您可以像这样覆盖系统提供的文本比例因子:
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'),
);
Run Code Online (Sandbox Code Playgroud)
这会将整个应用程序中的系统文本比例因子覆盖为您选择的因子。
但这是一个非常糟糕的做法。您不应该依赖覆盖系统/可访问性设置来修复您的 ui。有很多设备有很多外形、屏幕分辨率、密度等。解决这个问题的正确方法是创建一个响应式用户界面,可以很好地适应不同的屏幕和设置。一个好的起点是响应式 ui的官方 flutter 站点和auto_size_text包,它可以为您节省缩放文本的很多麻烦。
小智 5
为了空安全,请使用以下代码:
MaterialApp(
builder: (BuildContext context, Widget? child) {
return MediaQuery(
data: data.copyWith(
textScaleFactor: 1.0),
child: child!,
);
},
title: 'Flutter Demo',
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |