diff --git a/lib/modules/asset_tracking/asset_tracking_page.dart b/lib/modules/asset_tracking/asset_tracking_page.dart index 55073766..3deaa240 100644 --- a/lib/modules/asset_tracking/asset_tracking_page.dart +++ b/lib/modules/asset_tracking/asset_tracking_page.dart @@ -51,6 +51,16 @@ class _AssetTrackingPageState extends State with SingleTicker await assetTrackingProvider.getAssetsFromPenguin(loadMore: loadMore, searchModel: searchModel ?? _searchModel); } + void _refreshIfReturningToAssets(int previousIndex, int newIndex) { + final isAssetsView = newIndex == 1 || newIndex == 2; + final wasAssetsView = previousIndex == 1 || previousIndex == 2; + if (!isAssetsView || wasAssetsView) return; + + assetTrackingProvider.reset(); // clears paging + any map selections left by MapTrackingPage + _animationController.forward(from: 0); // replay the list/grid entrance animation + getAssetsFromPenguin(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -131,9 +141,12 @@ class _AssetTrackingPageState extends State with SingleTicker ], selected: {selectedIndex}, onSelectionChanged: (Set newSelection) { + final previousIndex = selectedIndex; + final newIndex = newSelection.first; setState(() { - selectedIndex = newSelection.first; + selectedIndex = newIndex; }); + _refreshIfReturningToAssets(previousIndex, newIndex); }, ), ),