diff --git a/lib/pangea/analytics_practice/analytics_practice_page.dart b/lib/pangea/analytics_practice/analytics_practice_page.dart index 9f3c0573e..6a7cc6fe5 100644 --- a/lib/pangea/analytics_practice/analytics_practice_page.dart +++ b/lib/pangea/analytics_practice/analytics_practice_page.dart @@ -58,7 +58,7 @@ class SessionLoader extends AsyncLoader { } class AnalyticsPractice extends StatefulWidget { - static bool bypassExitConfirmation = false; + static bool bypassExitConfirmation = true; final ConstructTypeEnum type; const AnalyticsPractice({ @@ -189,18 +189,18 @@ class AnalyticsPracticeState extends State String choiceTargetId(String choiceId) => '${widget.type.name}-choice-card-${choiceId.replaceAll(' ', '_')}'; - void _resetActivityState() { + void _clearState() { activityState.value = const AsyncState.loading(); activityTarget.value = null; enableChoicesNotifier.value = true; - } - void _resetSessionState() { progressNotifier.value = 0.0; _queue.clear(); _choiceTexts.clear(); _choiceEmojis.clear(); activityState.value = const AsyncState.idle(); + + AnalyticsPractice.bypassExitConfirmation = true; } void updateElapsedTime(int seconds) { @@ -227,8 +227,7 @@ class AnalyticsPracticeState extends State Future _onLanguageUpdate() async { try { - _resetActivityState(); - _resetSessionState(); + _clearState(); await _analyticsService .updateDispatcher.constructUpdateStream.stream.first .timeout(const Duration(seconds: 10)); @@ -252,9 +251,7 @@ class AnalyticsPracticeState extends State } Future reloadSession() async { - _resetActivityState(); - _resetSessionState(); - + _clearState(); _sessionLoader.reset(); await _startSession(); } @@ -294,8 +291,10 @@ class AnalyticsPracticeState extends State final activity = await nextActivityCompleter.completer.future; activityState.value = AsyncState.loaded(activity); + AnalyticsPractice.bypassExitConfirmation = false; } } catch (e) { + AnalyticsPractice.bypassExitConfirmation = true; activityState.value = AsyncState.error(e); } finally { _continuing = false; @@ -319,7 +318,9 @@ class AnalyticsPracticeState extends State if (!mounted) return; activityState.value = AsyncState.loaded(res); + AnalyticsPractice.bypassExitConfirmation = false; } catch (e) { + AnalyticsPractice.bypassExitConfirmation = true; if (!mounted) return; activityState.value = AsyncState.error(e); return;