【问题标题】:Is it recommended to set Font size with respect to display size?是否建议根据显示大小设置字体大小?
【发布时间】:2019-12-23 22:22:21
【问题描述】:

为了响应式设计,字体大小应该是一个固定的数字还是取决于屏幕大小的变量?

我之所以这么问,是因为 Flutter 在分配 FontSize 时使用“逻辑像素”,我不确定它们在不同屏幕尺寸上的表现。

从 4 英寸到 6.8 英寸甚至 10 英寸的平板电脑显示尺寸是这样的:

fontSize: min(MediaQuery.of(context).size.height,MediaQuery.of(context).size.width) /4

比直接硬编码更好fontSize: 40?

我猜这个问题更具体地是关于放置在其他容器/列/堆栈中的文本,如果它们以非预期的方式显示,可能会干扰其他设计元素。

如果容器的宽度/高度取决于屏幕尺寸,会有什么表现

Container(
  width: MediaQuery.of(context).size.width / 2,
  height: MediaQuery.of(context).size.height / 3,
  child: Text('This is a sample text')
)

vs 容器是否有固定大小

Container(
  width: 400,
  height: 500,
  child: Text('This is a sample text')
)

在这些情况下,最佳做法是什么?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    这是非常有情境的。

    在某些情况下,您的字体大小应根据设计原则进行固定。除非有可能溢出,否则没有问题。

    如果有可能溢出,您有两种选择:

    1 - 如果要固定字体大小,请使用https://api.flutter.dev/flutter/rendering/TextOverflow-class.html

    发生溢出时,您可以随意裁剪文本。

    2 - 在响应式设计的情况下,有多种实践,但您的示例在响应性方面并不健康。由于设备有许多可用的纵横比,因此您无法估计您的设计的外观。我建议你主要依靠设备width 而不是height

    我常用的一种方式,使用FittedBox

    https://api.flutter.dev/flutter/widgets/FittedBox-class.html

    FittedBox(
      fit: BoxFit.fitWidth,
      child: Text(someText)....
    

    它将根据您的适合类型自动包装可用空间。

    另一种解决方案是您可以为特定大小范围创建 if 条件,而不是进行算术计算。

    if(width < 400) fontsize = 14;
    else if(width < 500) fontsize = 16;
    ...
    

    最后,有一个非常有用的包来解决这类问题,看看它: https://pub.dev/packages/auto_size_text

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2014-11-09
      • 2012-03-08
      • 1970-01-01
      • 2017-07-02
      • 2012-05-04
      相关资源
      最近更新 更多