exercise_indicator.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:physigo/exercises/exercises_validation/models/exercise.dart';
  4. import 'package:physigo/exercises/exercises_validation/widgets/pose_detector.dart';
  5. class ExerciseIndicator extends StatelessWidget {
  6. const ExerciseIndicator({
  7. Key? key,
  8. required this.repCounter,
  9. required this.stepExerciseController,
  10. required this.exercise,
  11. }) : super(key: key);
  12. final Stream<int> repCounter;
  13. final Exercise exercise;
  14. final StreamController<StepExercise> stepExerciseController;
  15. @override
  16. Widget build(BuildContext context) {
  17. return Column(
  18. children: [
  19. StreamBuilder<StepExercise>(
  20. stream: stepExerciseController.stream,
  21. builder: (context, snapshot) {
  22. Color color;
  23. if (!snapshot.hasData) {
  24. color = Colors.black;
  25. } else {
  26. switch (snapshot.data!) {
  27. case StepExercise.notInPlace:
  28. color = Colors.black;
  29. break;
  30. case StepExercise.ready:
  31. color = Colors.green;
  32. break;
  33. case StepExercise.start:
  34. color = Colors.blue;
  35. break;
  36. case StepExercise.end:
  37. color = Colors.yellow;
  38. break;
  39. }
  40. }
  41. return Container(
  42. height: 100,
  43. width: 100,
  44. color: color,
  45. );
  46. },
  47. ),
  48. StreamBuilder<int>(
  49. stream: repCounter,
  50. builder: (context, snapshot) {
  51. var repCounter = 0;
  52. if (snapshot.hasData) {
  53. repCounter = snapshot.data!;
  54. }
  55. return Column(
  56. children: [
  57. Text(
  58. "${repCounter % exercise.repetitions}/${exercise.repetitions}",
  59. style: const TextStyle(fontSize: 40),
  60. ),
  61. Text(
  62. "${repCounter ~/ exercise.repetitions}/${exercise.sets}",
  63. style: const TextStyle(fontSize: 40),
  64. ),
  65. ],
  66. );
  67. },
  68. ),
  69. ],
  70. );
  71. }
  72. }