import 'dart:math'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:mnemo_cards/features/tests/progress_widget.dart'; import 'package:rxdart/rxdart.dart'; import '../../di/locator.dart'; import '../../theme/themes.dart'; class TestProgressWidget extends StatefulWidget { @override State createState() => _TestProgressWidgetState(); const TestProgressWidget({super.key}); } class _TestProgressWidgetState extends State { List results = []; int length = 0; Stream? timer; void _updateData() { results = [ Result.correct, ]; length = locator.testManager.questions.length + 1; for (final state in locator.testManager.states) { if (state.isAnswered) { if (state.isCorrect) { results.add(Result.correct); } else { // results.add(Result.wrong); results.add(Result.not_visited); } } else if (state.isSkipped) { results.add(Result.correct); } else { results.add(Result.not_visited); } } if (mounted) { setState(() {}); } } @override void initState() { super.initState(); locator.testManager.removeListener(_updateData); locator.testManager.addListener(_updateData); timer = Stream.periodic( Duration(seconds: 1), (tick) => Duration(seconds: 300 - tick - 1), ).startWith(Duration(seconds: 300)).take(300); _updateData(); } @override Widget build(BuildContext context) { return ProgressWidget( results, length, locator.testManager.color, timer: timer, key: ValueKey('TEST PROGRESS'), ); } }