Как делать события на основе времени в Flutter / Dart? - PullRequest
0 голосов
/ 30 июня 2019

Я пишу приложение Flutter, которое включает и выключает свет в зависимости от времени суток.Допустим, временной диапазон должен включаться в 17:00 и выключаться в 18:00.Если приложение будет открыто в это время, или если оно уже открыто, когда наступит время, индикатор включится.

У меня уже есть виджет освещения, и я буду использовать прозрачность для имитации освещения.вкл / выкл.

Container(
  height: MediaQuery.of(context).size.height * 0.18,
  decoration: new BoxDecoration(
    color: Colors.red.withOpacity(0.1),
    shape: BoxShape.circle,
  ),
),

Я проводил некоторые исследования Дартс DateTime , но я не совсем уверен, с чего начать, потому что я хочу, чтобы свет включался, если приложениеоткрывается во время «вкл» окна.Но также, если приложение уже открыто перед окном «on», оно будет опрашивать в фоновом режиме, и если окно «on» попадет, индикатор включится.

1 Ответ

0 голосов
/ 01 июля 2019

У Dart есть несколько примитивов, которые можно использовать для запуска событий, основанных на времени, как указано в этом посте: Есть ли у Dart планировщик?

Когда приложение открыто, использование Stream.periodic() или, возможно, пакета типа cron для дротика может помочь вам достичь желаемого результата.

Сложная часть связана с фоновым выполнением. Android гораздо более либерален, когда дело доходит до выполнения фоновых задач, тогда как iOS действительно блокирует то, что вы можете сделать.

Для Android команда Flutter фактически написала пакет под названием Android Alarm Manager , который использует службу Android Alarm Manager для выполнения кода Dart при срабатывании тревоги.

Насколько я знаю, точного эквивалента для iOS нет. На самом деле на Flutter Github есть вся тема . Однако есть пакет под названием background_fetch , который позволяет использовать преимущества фонового выполнения на обеих платформах. В течение этого времени вы можете проверить локальную базу данных, чтобы увидеть, было ли запланировано включение освещения в это время, и сделать необходимый звонок. К сожалению, это не точный механизм, поэтому свет может не включиться в нужное время.

Если это вариант, было бы намного лучше запланировать эти задачи на стороне сервера, чтобы иметь более детальный контроль над расписанием с помощью cron или чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...