首页 > 解决方案 > 如何正确管理 Flutter 应用中的全局 textScaleFactor?

问题描述

Flutter 应用程序对系统大文本做出反应,使所有 Text 小部件都非常大。我想限制 Text 小部件的 textScaleFactor 但我想在全局范围内而不是在我正在使用的每个 Text 小部件中进行。

现在启用大文本后,我得到了例外

扑来:══╡渲染图书馆捕获的例外╞═══════════════════════════════════════ ══════════════════flutter:布局时抛出如下信息:flutter:一个RenderFlex在底部溢出了14个像素。

什么是正确的方法?一种方法是创建一些包装小部件而不是使用文本,但也许可以通过其他方式解决?

图 1 图 2

标签: flutterdartfont-size

解决方案


这个解决方案是在Google I/O'19期间提出的(大约 20 分钟):

MaterialApp(
  builder: (BuildContext context, Widget child){
    final MediaQueryData data = MediaQuery.of(context);
    return MediaQuery(
      data: data.copyWith(
        textScaleFactor: data.textScaleFactor * (_isPassive ? 2 : 1)
      ),
      child: child,
    );
  },

如果您希望所有内容都有一个固定的textScaleFactor,则可以替换data.textScaleFactor * (_isPassive ? 2 : 1)为单个数字。1.0将使您的设计始终遵循您fontSize的 s。


推荐阅读