Создать приложение Flutter с таймером обратного отсчета для Android. Таймеры, которые я запускаю, должны продолжать работать, даже если экран телефона заблокирован или пользователь переключается на другое приложение.
Что я нашел в Интернете:
Это и это, которые сложны.
На вид более простое решение:
Оно использует StatelessWidget и Provider, чтобы, казалось бы, создавать виджеты, имеющие состояние, потому что Provider уведомляет виджеты об изменениях. Таким образом, можно динамически добавлять новые таймеры, и обратный отсчет таймера не останавливается, даже если экран телефона заблокирован или пользователь переключается на другое приложение. Никаких дополнений в AndroidManifest.xml не требуется.
Код: Выделить всё
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'dart:async';
class TimerProvider with ChangeNotifier {
List _timers = [];
List _timerInstances = [];
List get timers => _timers;
void addTimer(int duration) {_timers.add(duration); _startTimer(_timers.length - 1); notifyListeners();}
void decrementTimer(int index) {if (_timers[index] > 0) {_timers[index]--; notifyListeners();}}
void _startTimer(int index) {
if (_timerInstances.length TimerScreen(index: index),),);},
),
);
},
);
},
),
floatingActionButton: FloatingActionButton(onPressed: () {Provider.of(context, listen: false).addTimer(60);}, child: Icon(Icons.add),),
);
}
}
void main() {runApp(MyApp());}
Код: Выделить всё
cupertino_icons: ^1.0.6
provider: ^6.1.2
Я новичок в Flutter, поэтому хотел бы знать, можно ли создавать приложение таким образом использование StatelessWidget — это «хорошая инженерия» в экосистеме Flutter/Dart? Я планирую расширить функциональность, чтобы иметь возможность приостанавливать/воспроизводить таймер на экране таймера, а также иметь отдельный экран, на котором можно будет редактировать продолжительность таймера. Я также буду сохранять таймеры в хранилище с помощью Hive.
Подробнее здесь: https://stackoverflow.com/questions/790 ... background