cpd_2022_zi/lib/widgets/workout_timer_widget.dart

74 lines
2.5 KiB
Dart
Raw Normal View History

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';
2023-03-01 13:30:12 +01:00
import '../providers/input_provider.dart';
import '../providers/timer_provider.dart';
2023-03-01 13:30:12 +01:00
import 'popup_for_start_and_stop.dart';
class WorkoutTimerWidget extends StatelessWidget {
const WorkoutTimerWidget({super.key});
2023-03-01 13:30:12 +01:00
void _onStartButtonPressed(BuildContext context) {}
@override
Widget build(BuildContext context) {
TimerProvider timerProvider = context.watch<TimerProvider>();
WorkoutProvider workoutProvider = context.watch<WorkoutProvider>();
if (workoutProvider.isPhaseComplete) {
Timer(const Duration(milliseconds: 1), () => workoutProvider.nextPhase());
}
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(
2023-02-28 15:07:47 +01:00
onPressed: !workoutProvider.isWorkoutStarted
2023-03-01 13:30:12 +01:00
? () async {
double sliderValue = await showDialog(
context: context,
builder: (BuildContext context) {
return ChangeNotifierProvider(
create: (context) => InputProvider(),
child: const TimerStartStopPopup(
title: 'Motivation vor dem Training',
),
);
},
);
print(sliderValue);
workoutProvider.startWorkout();
}
2023-02-28 15:07:47 +01:00
: () => workoutProvider.stopWorkout(),
child: Text(timerProvider.started ? 'Stop' : 'Start'))
],
);
}
}