Fabio
Fabio

Reputation: 2834

How to create and use responsive themes in Flutter?

I'm getting MediaQuery.of() called with a context that does not contain a MediaQuery. when trying to access MediaQuery from MaterialApp:

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

Upvotes: 3

Views: 1442

Answers (2)

Rémi Rousselet
Rémi Rousselet

Reputation: 277697

Use builder of MaterialApp instead. So that you can use MediaQuery instantiated by MatetialApp inside your Theme.

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

Upvotes: 7

Fabio
Fabio

Reputation: 2834

return new MaterialApp(
      title: 'Flutter Demo',
      theme: getTheme(new MediaQueryData.fromWindow(ui.window)),
      home: new Container(),
    );

Thanks Günter :)

Upvotes: 3

Related Questions