startCountupTimer method

void startCountupTimer(
  1. Key key,
  2. Duration initialDuration, {
  3. Duration? maxDuration,
  4. VoidCallback? onFinish,
  5. TimerController? controller,
  6. bool isPaused = false,
})

启动正向计时

Implementation

void startCountupTimer(
  Key key,
  Duration initialDuration, {
  Duration? maxDuration,
  VoidCallback? onFinish,
  TimerController? controller,
  bool isPaused = false,
}) {
  final effectiveInitialDuration = initialDuration.isNegative
      ? Duration.zero
      : initialDuration;
  final effectiveMaxDuration = maxDuration == null || maxDuration.isNegative
      ? null
      : maxDuration;
  final notifier = _notifiers.putIfAbsent(
    key,
    () => AdvancedValueNotifier(effectiveInitialDuration),
  );

  _entries[key]?._controller?._detach(_entries[key]!);
  final entry = _TimerEntry.countup(
    key: key,
    initialDuration: effectiveInitialDuration,
    maxDuration: effectiveMaxDuration,
    notifier: notifier,
    onFinish: onFinish,
    isPaused: isPaused,
    onChanged: _scheduleNextTick,
  );
  _entries[key] = entry;
  controller?._attach(entry);

  _ensureLifecycleObserver();
  entry.refresh();
  _scheduleNextTick();
}