Flutter:根据移动/平板电脑设备类型更改主题数据

时间:2019-09-24 15:35:00

标签: flutter

如果用户在平板电脑设备上,我需要更改应用程序中的文本高度。最简单的方法是在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祖先   传递给MediaQuery.of()的上下文。发生这种情况是因为   您没有WidgetsApp或MaterialApp小部件(那些小部件   引入MediaQuery),否则如果您使用的上下文出现   从这些小部件上方的小部件中获取。

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

1 个答案:

答案 0 :(得分:0)

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