Merge pull request #5400 from pangeachat/5395-add-progress-bar-to-it-popup

feat: add progress bar to IT bar
This commit is contained in:
ggurdin 2026-01-23 12:33:06 -05:00 committed by GitHub
commit 5136127609
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pangea/analytics_summary/animated_progress_bar.dart';
import 'package:fluffychat/pangea/choreographer/choreo_constants.dart';
import 'package:fluffychat/pangea/choreographer/choreographer.dart';
import 'package:fluffychat/pangea/choreographer/it/completed_it_step_model.dart';
@ -200,6 +201,7 @@ class ITBarState extends State<ITBar> with SingleTickerProviderStateMixin {
setEditing:
widget.choreographer.itController.setEditingSourceText,
editing: widget.choreographer.itController.editing,
progress: widget.choreographer.itController.progress,
sourceTextController: _sourceTextController,
sourceText: _sourceText,
onSubmitEdits: (_) {
@ -267,6 +269,7 @@ class _ITBarHeader extends StatelessWidget {
final Function(bool) setEditing;
final ValueNotifier<bool> editing;
final ValueNotifier<double> progress;
final TextEditingController sourceTextController;
final ValueNotifier<String?> sourceText;
@ -274,6 +277,7 @@ class _ITBarHeader extends StatelessWidget {
required this.onClose,
required this.setEditing,
required this.editing,
required this.progress,
required this.onSubmitEdits,
required this.sourceTextController,
required this.sourceText,
@ -316,8 +320,26 @@ class _ITBarHeader extends StatelessWidget {
],
),
secondChild: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0),
child: ValueListenableBuilder(
valueListenable: progress,
builder: (context, value, __) => AnimatedProgressBar(
height: 20.0,
widthPercent: value,
backgroundColor: Theme.of(context)
.colorScheme
.surfaceContainerHighest,
barColor: Theme.of(context)
.colorScheme
.primary
.withAlpha(180),
),
),
),
),
IconButton(
color: Theme.of(context).colorScheme.primary,
onPressed: () => setEditing(true),

View file

@ -24,11 +24,14 @@ class ITController {
final ValueNotifier<ITStepModel?> _currentITStep = ValueNotifier(null);
final ValueNotifier<bool> _open = ValueNotifier(false);
final ValueNotifier<bool> _editing = ValueNotifier(false);
final ValueNotifier<double> _progress = ValueNotifier(0.0);
ITController(this.onError);
ValueNotifier<bool> get open => _open;
ValueNotifier<bool> get editing => _editing;
ValueNotifier<double> get progress => _progress;
ValueNotifier<ITStepModel?> get currentITStep => _currentITStep;
ValueNotifier<String?> get sourceText => _sourceText;
StreamController<CompletedITStepModel> acceptedContinuanceStream =
@ -142,6 +145,15 @@ class ITController {
chosen: chosenIndex,
),
);
final progress = (_goldRouteTracker!.continuances.indexWhere(
(c) =>
c.text ==
_currentITStep.value!.continuances[chosenIndex].text,
) +
1) /
_goldRouteTracker!.continuances.length;
debugPrint("Progress updated to $progress");
_progress.value = progress;
_continueIT();
}