fontSize
的默认值为14.0
。因此,如我的代码示例所示,textScaleFactor: 2.0
似乎与fontSize: 28.0
相同:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Title')),
body: Row(
children: <Widget>[
new Text("Jane", textScaleFactor: 2.0),
new Text(" Doe", style: new TextStyle(fontSize: 28.0)),
],
)
)
);
}
}
优缺点是什么?在特定情况下何时使用一种或另一种有什么建议?
答案 0 :(得分:3)
它们之间的渲染没有区别。他们的目的是什么变化。
字体大小通常是每个组件的值。而比例因子更全球化。您可以直接在Text
上覆盖比例因子这一事实只是一个奖励。
在典型的应用程序中,您将具有以下内容:
MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 2.0),
child: Whatever(
child: Text("Foo", style: Theme.of(context).textTheme.headline),
),
);
基本上,将textScaleFactor
作为缩放选项。字体大小用于将标题与内容分开。
答案 1 :(得分:2)
据我了解,textScaleFactor
用于辅助功能。
有一个Android系统选项可以增加文本大小(而不是总体UI比例)。
似乎没有技术差异。
来自TextStyle
文档:
/// During painting, the [fontSize] is multiplied by the current
/// `textScaleFactor` to let users make it easier to read text by increasing
/// its size.
答案 2 :(得分:1)
字体大小实际上是程序员在其应用程序中给出的大小,并且不会随用户设置而改变。
例如:-
Text('Always the same size!', style: TextStyle(fontSize: 20));
无论用户在其中进行了什么更改,此文本始终具有20个设备像素的大小
他/她的设备设置。
现在看看TextScaleFactor如何影响此场景。...
final scaleFactor = MediaQuery.of(context).textScaleFactor;
Text('This changes!', style: TextStyle(fontSize: 20 * scaleFactor));
如果用户未更改设置中的任何内容,则此文本的大小也为20(因为textScaleFactor默认为1)。但是,如果进行了更改,则该文本的字体大小将遵守用户设置。
答案 3 :(得分:-3)
fontSize 只是一个普通大小,您给它15.0,它将是15.0像素
但是 textScaleFactor 每个逻辑像素的字体像素数。
例如,如果文本比例因子为1.5,则文本将比指定的字体大小大50%。在这种情况下:15.0像素+(15.0 * 0.5像素)= 15.0像素+ 7.5像素= 22.5像素
如果您未指定textScaleFactor,则默认值为1