diff --git a/lib/pangea/analytics_details_popup/analytics_details_popup.dart b/lib/pangea/analytics_details_popup/analytics_details_popup.dart index 4c97d6c6b..78b8c15e6 100644 --- a/lib/pangea/analytics_details_popup/analytics_details_popup.dart +++ b/lib/pangea/analytics_details_popup/analytics_details_popup.dart @@ -42,33 +42,48 @@ class ConstructAnalyticsViewState extends State { bool isSearching = false; ConstructLevelEnum? selectedConstructLevel; - StreamSubscription? _blockedConstructSub; + StreamSubscription? _constructUpdateSub; @override void initState() { super.initState(); - _setMorphs(); - _setVocab(); + _setAnalyticsData(); searchController.addListener(() { if (mounted) setState(() {}); }); - _blockedConstructSub = Matrix.of(context) + _constructUpdateSub = Matrix.of(context) .analyticsDataService .updateDispatcher .constructUpdateStream .stream - .listen(_onBlockConstruct); + .listen(_onConstructUpdate); } @override void dispose() { searchController.dispose(); - _blockedConstructSub?.cancel(); + _constructUpdateSub?.cancel(); super.dispose(); } + Future _setAnalyticsData() async { + final future = [ + _setMorphs(), + _setVocab(), + ]; + await Future.wait(future); + } + + void _onConstructUpdate(AnalyticsStreamUpdate update) { + if (update.blockedConstruct != null) { + _onBlockConstruct(update); + } + + _setAnalyticsData(); + } + void _onBlockConstruct(AnalyticsStreamUpdate update) { final blocked = update.blockedConstruct; if (blocked == null) return;