Ладно, поэтому я уже провел немало исследований по этой конкретной теме c ранее, и я знаю, что это функция, которую разработчики Flutter еще не реализовали для автоматического функционирования (настройка освещения и темные темы для динамического изменения при открытии приложения), но я знаю, что это возможно. Я не хочу, чтобы моим пользователям приходилось делать этот выбор, и я знаю, что я близок, но я упускаю что-то важное. Я объясню:
final Brightness brightnessValue = MediaQuery.of(context).platformBrightness;
bool isDark = brightnessValue == Brightness.dark;
Эти две строки кода ДОЛЖНЫ пройти через логический (темная тема true или false) в мой код. Эти строки кода выполняются, но выдают ошибку.
MediaQuery.of () вызывается с контекстом, который не содержит MediaQuery. Не может быть найдено предка MediaQuery, начиная с контекста, который был передан MediaQuery.of (). Это может произойти из-за того, что у вас нет виджета WidgetsApp или MaterialApp (эти виджеты содержат MediaQuery), или это может произойти, если используемый вами контекст происходит из виджета над этими виджетами.). Используемый контекст: MyApp, см. Также: https://flutter.dev/docs/testing/errors
Теперь я видел, как некоторые люди реализуют эту строку кода, и она работает для них, поэтому я знаю, что это не синтаксическая вещь , И я фактически помещаю эту строку кода под приложением виджетов, как они просят (насколько я понимаю, поэтому я в тупике.
Соответствующий код:
CupertinoThemeData currentTheme;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Brightness brightnessValue = MediaQuery.of(context).platformBrightness;
bool isDark = brightnessValue == Brightness.dark;
<CODE TO SELECT THEME DEPENDING ON PHONE'S THEME. Setting parameters of currentTheme>
return CupertinoApp(
<CODE FOR APP>
),
}
}
Теперь я поместил бы его в виджет CupertinoApp, но это тоже не сработало, так как вы не можете сделать там вызов функции внутри, и мне НУЖНО передать туда тему, так как это влияет на всю программу. Тематика.
По сути, это выглядит как сценарий «курица и яйцо», где я не могу задать тему, пока не получу медиа-запрос, и не могу выполнить медиа-запрос, пока Мы уже установили тему, которая сводит на нет всю цель запроса.
Есть идеи?