当前位置: 首页 > 知识库问答 >
问题:

如何在整个应用程序中而不是为每个页面设置MediaQuery textScaleFactor

薄瑞
2023-03-14
final query = MediaQuery.of(context);

return MediaQuery(
  data: query.copyWith(textScaleFactor: 1.4),
  child: MaterialApp(
     title: "Flutter Demo",
     initialRoute: '/loginPage',
  )
);
 ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (13775): The following assertion was thrown building MyApp(dirty, state: _MyAppState#38690):
I/flutter (13775): MediaQuery.of() called with a context that does not contain a MediaQuery.
I/flutter (13775): No MediaQuery ancestor could be found starting from the context that was passed to MediaQuery.of().
I/flutter (13775): This can happen because you do not have a WidgetsApp or MaterialApp widget (those widgets introduce
I/flutter (13775): a MediaQuery), or it can happen if the context you use comes from a widget above those widgets.

使用MediaQuery类及其数据属性,我想为整个应用程序设置textScaleFactor,但是我不能在MaterialApp之前获得上下文。

final query = MediaQuery.of(context);

return MediaQuery(
  data: query.copyWith(textScaleFactor: 1.4),
  child: Scaffold(
     [...]
  );

共有1个答案

郗鹏
2023-03-14

最简单的方法是用另一个MaterialApp包装MaterialApp,并设置UseInheritedMediaQuery:

    return MaterialApp(
      home: LayoutBuilder(
        builder: (context, _) { # builder so we can access MaterialApp context
          final query = MediaQuery.of(context);
          return MediaQuery(
              data: query.copyWith(textScaleFactor: 1.4),
              child: MaterialApp( 
                  useInheritedMediaQuery: true, #inherited MediaQuery will be used
                  ....

另一种方法是使用widgetsbinding.instance.window.physicalsizehttps://stackoverflow.com/a/60415290/4679965

 类似资料:
  • 我需要使用 laravel 5.3 和 vuejs 2 构建一个应用程序,因为我需要使用双向绑定而不是使用 jquery。 我需要用刀片模板设置视图。然后,我需要在每个页面中使用vuejs,如下所述。 资源/断言/js/组件/List.vue resources/asserts/views/post/index.blade.php 有Add。vue创建.blade。php等…在Add。vue 这是

  • 是否可以在Android应用程序中设置自定义字体? 我尝试了这里发布的内容,但我不知道我的扩展应用程序类在哪里。。。 有什么帮助吗? 编辑: 我尝试了以下方法: 添加一个资产文件夹并将字体插入其中,如下所示: > 从我的调用这个新类。 我选择了我的风格并添加了它。 MyApp。java: AndroidManifest。xml: 样式。xml: 但我的字体还是不是长宁。。。有什么想法吗? 然后调用

  • 我需要在tomcat 6中配置一个自定义404页面,并且我想避免重复每个webapp的文件(我的B计划是使用符号链接,但我也想避免这些)。 这个SO线程建议创建一个新的“错误”Web应用程序并将自定义页面文件放入其中。但是后来我还没有弄清楚如何在 web 中设置自定义 404 配置.xml以使用此 url http:// 如果我这样设置它: 它相对于用户当时所在的特定webapp的根目录。

  • 我正在应用程序中使用Roboto light字体。要设置字体,我必须向每个视图添加。有什么方法可以将Roboto字体声明为整个应用程序的默认字体家族吗?我试过这样,但似乎不起作用。

  • 这是否意味着只有一个单一的脚手架下的材料应用程序或一个单亲脚手架为每个页面。如果是第一次,我们怎么导航?如果它更晚,这不是意味着在每次导航中重新呈现公共的和吗?最好的做法是什么。

  • 我知道我可以使用@XmlSchema来实现这一点,但问题是我们在同一个包中有一个类,它需要其名称空间与package-info.java中定义的名称空间不同。因此,我们在@XmlRootElement中声明了名称空间(当然,同时仍然保留@XmlSchema)。但这样做不允许我们设置类的elementFormDefault。将类移动到其他包不是一个选项。基本上,我只想覆盖这个特定类的名称空间。