У Dart есть несколько примитивов, которые можно использовать для запуска событий, основанных на времени, как указано в этом посте: Есть ли у Dart планировщик?
Когда приложение открыто, использование Stream.periodic()
или, возможно, пакета типа cron для дротика может помочь вам достичь желаемого результата.
Сложная часть связана с фоновым выполнением. Android гораздо более либерален, когда дело доходит до выполнения фоновых задач, тогда как iOS действительно блокирует то, что вы можете сделать.
Для Android команда Flutter фактически написала пакет под названием Android Alarm Manager , который использует службу Android Alarm Manager для выполнения кода Dart при срабатывании тревоги.
Насколько я знаю, точного эквивалента для iOS нет. На самом деле на Flutter Github есть вся тема . Однако есть пакет под названием background_fetch , который позволяет использовать преимущества фонового выполнения на обеих платформах. В течение этого времени вы можете проверить локальную базу данных, чтобы увидеть, было ли запланировано включение освещения в это время, и сделать необходимый звонок. К сожалению, это не точный механизм, поэтому свет может не включиться в нужное время.
Если это вариант, было бы намного лучше запланировать эти задачи на стороне сервера, чтобы иметь более детальный контроль над расписанием с помощью cron или чего-то подобного.