如何在 Flutter 中创建和使用响应式主题?

Fab*_*bio 2 flutter flutter-layout

MediaQuery.of() called with a context that does not contain a MediaQuery.在尝试从MaterialApp以下位置访问 MediaQuery 时遇到了:

return new MaterialApp(
  title: 'Flutter Demo',
  theme: getTheme(MediaQuery.of(context)),
  home: new Container(),
);
Run Code Online (Sandbox Code Playgroud)

Rém*_*let 5

使用builderMaterialApp替代。所以,你可以使用MediaQuery实例通过MatetialApp您的内部Theme

new MaterialApp(
  builder: (context, child) {
    return new Theme(
      data: getTheme(MediaQuery.of(context)),
      child: child,
    );
  },
  home: new ChatScreen(),
),
Run Code Online (Sandbox Code Playgroud)