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

如何使用MediaQuery构建主题?

程成天
2023-03-14

开始学习Flutter,所以我在考虑是否可以创建一个返回ThemeData对象的函数,但是在这个函数中我想使用MediaQuery.of(context)。我的意思是,我知道我可以创建这样一个函数,但是如果我在其中使用MediaQuery.of(context),就会出现一个错误(MediaQuery.of(),调用的上下文不包含MediaQuery)抱怨缺少mediaqueryProvider。我知道我可以在MaterialApp的子元素中使用MediaQuery,但我现在有一个设计问题。想象一下:

ThemeData getTheme(BuildContext context) {
  // I wanna be able to call MediaQuery.of(contex) here
  return ThemeData();
}

MaterialApp(
   home: home,
   // the getTheme() must be able to use MediaQuery. It takes a context and returns a ThemeData object
   theme: theme.getTheme(context),
   routes: routes,
)

谢谢你的帮助。

共有1个答案

阎星河
2023-03-14

欢迎加入兄弟会。实际上,要调用MediaQuery,您需要用MaterialApp()包装主小部件,这通常在main.dart文件中完成。下面是一个例子:

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

希望能帮上忙!

 类似资料:
  • 我必须在docker环境中构建yolact(我使用sagemaker笔记本)。就像这样 而我想经营这个 但我有一个错误: 但是环境支持CUDA。有人知道问题出在哪里吗? 谢谢你。

  • 我一直试图在Flutter中获得整个上下文视图的大小。但每次我尝试,我都会得到上面提到的错误。这是我的密码: 注意:我还尝试了一个。请帮我找出我做错了什么。

  • 当我使用API远程触发作业时,jenkins上的作业会说:“由远程主机IP启动”。但我的工作可能会因不同的原因和不同的来源而触发,所以如果我在詹金斯能看到一份工作并直接看到触发的原因,那就太好了。 我知道我可以传递一个字符串参数,然后在每个作业中查看参数-但这不是很明显。我希望在所有工作的列表中看到它。类似于:。 有什么办法可以做到这一点吗? 我注意到我们的发布作业采用了一个显示我想要的版本参数—

  • 问题内容: 我正在使用gradle构建的开源项目。我想生成一个(project)-sources.jar文件,可以将其加载到我的IDE(IntelliJ IDEA)中并通过该项目进行调试。我知道如何生成文件(如果可以生成的话)。 我浏览了该项目可用的gradle任务,但没有一个可以生成source jar文件。 为该项目生成源jar文件的最简单方法是什么? 将源添加到包含已编译的类文件的jar文件

  • 我试图在Eclipse的Java中构建一个Apache Spark应用程序。我使用Gradle作为我的构建管理系统。我应该在中写什么?我应该使用哪些gradle命令来做这个Maven POM和终端命令所做的同样的事情? 和

  • null camel-kafka中是否有任何配置,我们可以使用它来增加kafka主题分区计数?