【问题标题】:Flutter: Change theme data depending on mobile/tablet device typeFlutter:根据移动/平板设备类型更改主题数据
【发布时间】:2020-01-24 18:47:20
【问题描述】:

如果用户使用的是平板设备,我需要更改整个应用程序的文本高度。最简单的方法是在 MaterialApp 中设置 TextTheme 时调整 TextStyle 的高度值。目前我们通过检查MediaQuery.of(context).size.width > 600来判断用户是否在平板电脑上。所以像:

textTheme: TextTheme(
                  body1: TextStyle(
                      fontFamily: 'roboto',
                      fontWeight: FontWeight.normal,
                      fontSize: 16.0,
                      height: MediaQuery.of(context).size.width > 600
                          ? 1.15
                          : 1.3),

不幸的是,当我们设置主题时,此检查不起作用,因为我们收到错误:

MediaQuery.of() 调用的上下文不包含 媒体查询。从 开始找不到 MediaQuery 祖先 传递给 MediaQuery.of() 的上下文。这可能发生,因为 您没有 WidgetsApp 或 MaterialApp 小部件(这些小部件 引入 MediaQuery),或者如果您使用的上下文出现,它可能会发生 来自这些小部件上方的小部件。

在设置 ThemeData 时我应该如何检查设备类型?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我使用的解决方案是等待第一个页面构建,使用其上下文来确定设备宽度,然后通过使用 bloc 模式监听状态变化将结果“传递”回 MaterialApp。

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多