import 'dart:async'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smoke_cess_app/providers/workout_provider.dart'; import 'package:smoke_cess_app/widgets/timer_widget.dart'; import '../providers/timer_provider.dart'; import 'popup_for_start_and_stop.dart'; class WorkoutTimerWidget extends StatelessWidget { const WorkoutTimerWidget({super.key}); @override Widget build(BuildContext context) { TimerProvider timerProvider = context.watch(); WorkoutProvider workoutProvider = context.watch(); if (workoutProvider.isPhaseComplete && workoutProvider.isWorkoutStarted) { Timer(const Duration(milliseconds: 1), () => workoutProvider.nextPhase()); } void handleStartStopWorkout() async { if (!workoutProvider.isWorkoutStarted) { await showMotivationPopup( context, (double value) => workoutProvider.motivationBefore = value.toInt(), 'Motivation vor dem Training'); workoutProvider.startWorkout(); } else { workoutProvider.stopWorkout(); await showMotivationPopup( context, (double value) => workoutProvider.motivationAfter = value.toInt(), 'Motivation nach dem Training'); } } if (workoutProvider.isWorkoutComplete) { handleStartStopWorkout(); } return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(workoutProvider.currentPhase), const SizedBox( height: 20, ), Stack( alignment: Alignment.center, children: [ SizedBox( height: 100, width: 100, child: CircularProgressIndicator( color: workoutProvider.currentPhaseColor, value: (workoutProvider.currentPhaseDuration.inSeconds .toDouble() - timerProvider.elapsedSeconds) / workoutProvider.currentPhaseDuration.inSeconds)), TimerWidget(duration: workoutProvider.currentPhaseDuration), ], ), const SizedBox( height: 20, ), ElevatedButton( onPressed: handleStartStopWorkout, child: Text(timerProvider.started ? 'Stop' : 'Start')) ], ); } }