Я буду держать его как можно короче. Так что у меня есть таймер, который получает его значение int с пакетом Provider.
Consumer<TimeData>(
builder: (context, timeData, child) {
return Timer(timeData.durations[playerNumber]);
},
Я хочу, чтобы таймер обновлялся при нажатии кнопки. Поэтому я использую переменную playerNumber.
Это функция onPressed кнопки
onPressed: () {
setState(() {
if (Provider.of<PlayerData>(context, listen: false)
.players[playerNumber + 1] !=
null) {
playerNumber++;
resetController();
//createController();
}
});
}
Однако таймер не обновляется, даже если кнопка нажата, а номер игрока увеличивается (и в методе setState). Кто-нибудь знает, как я могу сделать сброс таймера?
Это класс Timer:
import 'package:countdown_flutter/countdown_flutter.dart';
import 'package:flutter/material.dart';
class Timer extends StatelessWidget {
final int duration;
Timer(this.duration);
@override
Widget build(BuildContext context) {
return Center(
child: Countdown(
duration: Duration(seconds: duration),
builder: (BuildContext ctx, Duration remaining) {
return Text(
'${remaining.inMinutes}:${remaining.inSeconds - (remaining.inMinutes * 60)}',
style: TextStyle(
color: Colors.white,
fontSize: 99.9,
),
);
},
),
);
}
}
и это мой класс TimeData, откуда поступают данные
import 'package:flutter/foundation.dart';
class TimeData extends ChangeNotifier {
List<int> durations = [];
void addTime(int time) {
final duration = time;
durations.add(duration);
notifyListeners();
}
void deleteList() {
durations.clear();
notifyListeners();
}
}