import 'dart:async'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smoke_cess_app/providers/tasks_provider.dart'; import 'package:smoke_cess_app/providers/workout_provider.dart'; import 'package:smoke_cess_app/services/pages_service.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(); TasksProvider tasksProvider = context.read(); if (workoutProvider.isPhaseComplete && !workoutProvider.isWorkoutComplete) { Timer(const Duration(milliseconds: 1), () => workoutProvider.nextPhase()); } if (workoutProvider.isWorkoutComplete) { Timer( const Duration(milliseconds: 1), () => showMotivationPopup(context, (double value) { workoutProvider.motivationAfter = value.toInt(); workoutProvider.saveWorkout(); tasksProvider.setTaskDone(Pages.timer); }, 'Motivation nach dem Training')); } void handleStartStopWorkout() { if (!workoutProvider.isWorkoutStarted) { showMotivationPopup(context, (double value) { workoutProvider.motivationBefore = value.toInt(); workoutProvider.startWorkout(); }, 'Motivation vor dem Training'); } else { workoutProvider.stopWorkout(); showMotivationPopup( context, (double value) => workoutProvider.motivationAfter = value.toInt(), 'Motivation nach dem Training'); } } 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')) ], ); } }