【问题标题】:How to make Flutter app font size independent from device settings?如何使 Flutter 应用程序字体大小独立于设备设置?
【发布时间】:2020-03-27 07:59:27
【问题描述】:

我需要让我的整个应用程序独立于设备的字体大小设置。我发现我可以为每个文本视图手动设置textScaleFactor: 1.0。对于一些 Text 小部件来说,这是一个很好的解决方案,但对于具有数十个 Text 小部件的大型应用程序来说却不是很好。

【问题讨论】:

  • MaterialApp 有一个theme 属性,您可以自定义它,它将应用于您的材质应用程序中包含的所有小部件。找出每个小部件使用哪个属性会有点棘手,但它是可行的:)。

标签: flutter settings font-size


【解决方案1】:

首先我必须说,让您的文字与手机设置无关是个坏主意。它使您的应用程序对失明或运动障碍等残疾用户不太友好。作为开发人员,您应该确保您的布局有足够的空间在字体大小增加时呈现其所有内容。但有时我们实际上需要固定字体大小。

您所要做的就是创建 Material App Builder 来为整个应用设置 Media Query 属性“textScaleFactor: 1.0”。

MaterialApp(
  builder: (context, child) {
    return MediaQuery(
      child: child,
      data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
    );
   },
)

找到解决方案here

【讨论】:

  • 这不适用于可评估性设置
  • 如果您不提供构建器而是为我的 MaterialApp 使用 'home' 参数,这将如何工作?
【解决方案2】:

你是对的Oleksandr,将 textScaleFactor 设置为 1.0 并称其为一天意味着忽略用户的需求。他们要求更大的文本大小,而您没有提供。

让我们让它更具适应性

你可以选择最小因子和最大因子,你可以比较给。

return MaterialApp(
        builder: (context, child) {
          final mediaQueryData = MediaQuery.of(context);
          final scale = mediaQueryData.textScaleFactor.clamp(1.0, 1.3);
          return MediaQuery(
            child: child,
            data: MediaQuery.of(context).copyWith(textScaleFactor: scale),
          );
        },
);

我们可以给出一个受约束的系统值,而不是硬编码的 textScaleFactor

通过使用 clamp(),我们为系统 textScaleFactor 提供了下限和上限。

来源:Restricting system textScaleFactor, when you have to

【讨论】:

  • 等等,这个去哪儿了?什么是child
猜你喜欢
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 2020-03-31
  • 2021-03-25
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多