【问题标题】:What is the universal range of the user defined textScaleFactor in Flutter?Flutter中用户定义的textScaleFactor的通用范围是多少?
【发布时间】:2019-10-25 11:05:12
【问题描述】:

在对 textScaleFactor 参数的预期范围进行毫无结果的搜索后,我试图通过打印来回答我的 q...

MediaQuery.textScaleFactorOf(context);

在我的 Note 9 上调试时 2 次:当我设置字体大小(在我的辅助功能设置中)@其最小值和最大值时,输出为 0.8 和 2,分别为 ..

我的问题是:我可以期望这是所有设备的通用范围吗?

如果您不确定,我当然会接受发布他们自己的测试结果的人的回答(尤其是如果他们要在 iphone 上测试)。

【问题讨论】:

    标签: flutter fonts accessibility font-size flutter-layout


    【解决方案1】:

    在 iOS 模拟器和我的 iPhoneXS Max 上,默认值为 1.0 即使Display View setting 被缩放或标准。

    当我转到辅助功能并将大小更改为最大可用大小时(逐步):

    flutter: text scale 1.1176470588235294
    flutter: text scale 1.2352941176470589
    flutter: text scale 1.3529411764705883
    

    如果我检查"Larger Accessibility Sizes" 的切换,我得到的最大值:

    flutter: text scale 3.1176470588235294
    

    使用辅助功能中的滑块向下(只有 3 个步骤可用):

    flutter: text scale 0.9411764705882353
    flutter: text scale 0.8823529411764706
    flutter: text scale 0.8235294117647058
    

    我不知道这些值对你有多大用处,但要回答你的问题,你不应该期望 min=0.8 & max=2 ...

    无论如何,如果您需要以某种方式限制因素,因为我不知道有什么方法可以将它们注入 MaterialApp 使用的 MediaQuery,您应该有一个自定义函数来规范化 MediaQuery.textScaleFactorOf(context),也许在您的小部件树的根部,并手动将其应用于每个 Text::textScaleFactor ?

    【讨论】:

    • 这很有帮助,你!我想等几天看看当前范围(即 0.8-3.118,在考虑了您的结果之后)是否可以通过其他答案进一步扩展。
    【解决方案2】:

    有人已经对问题提供了令人满意的答案;这只是我对他们的结束语的扩展:

    无论如何,如果您需要以某种方式限制因素,因为我不知道有什么方法可以将它们注入 MaterialApp 使用的 MediaQuery,您应该有一个自定义函数来规范化 MediaQuery.textScaleFactorOf(context),也许在您的小部件树的根部,并手动将其应用于每个 Text::textScaleFactor ?

    我最终使用以下代码将 textScaleFactor 限制在 0.8-2.0 范围内;我添加了一个额外的约束,结果将始终是 0.1 的倍数:

    import 'package:flutter/material.dart';
    import 'dart:math';
    import 'authentication-page.dart';
    
    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          builder: (context, child) {
            onLayout(context);
            return MediaQuery(
                child: child,
                data: MediaQuery.of(context).copyWith(textScaleFactor: max(0.8, min(2.0, (10*MediaQuery.textScaleFactorOf(context)).round()/10))));
          },
          title: 'Flutter Demo',
          home: AuthenticationPage(),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-23
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多