Как создавать и использовать адаптивные темы во Flutter?

Я получаю MediaQuery.of() called with a context that does not contain a MediaQuery. при попытке получить доступ к MediaQuery из MaterialApp:

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

person Fabio    schedule 18.04.2018    source источник


Ответы (2)


Вместо этого используйте builder из MaterialApp. Чтобы вы могли использовать MediaQuery, созданный MatetialApp внутри вашего Theme.

new MaterialApp(
  builder: (context, child) {
    return new Theme(
      data: getTheme(MediaQuery.of(context)),
      child: child,
    );
  },
  home: new ChatScreen(),
),
person Rémi Rousselet    schedule 19.04.2018

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

Спасибо, Гюнтер :)

person Fabio    schedule 18.04.2018
comment
Вместо этого я бы использовал свойство builder - person Rémi Rousselet; 18.04.2018
comment
Можете ли вы опубликовать ответ с примером? - person Fabio; 19.04.2018