Необходимо сбросить потребительский виджет во флаттере - PullRequest
0 голосов
/ 07 апреля 2020

Я буду держать его как можно короче. Так что у меня есть таймер, который получает его значение 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();
  }
}
...