Skip to content

Commit

Permalink
Fixed bug where reset listener was not fired
Browse files Browse the repository at this point in the history
Added refreshing of reset listener when reset stream changes within widget lifecycle
  • Loading branch information
JaffaKetchup committed Aug 7, 2024
1 parent a2aada4 commit 8136ef0
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions lib/src/layer/tile_layer/tile_layer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,7 @@ class _TileLayerState extends State<TileLayer> with TickerProviderStateMixin {

final _tileImageManager = TileImageManager();
late TileBounds _tileBounds;
late var _tileRangeCalculator =
TileRangeCalculator(tileSize: widget.tileSize);
late TileRangeCalculator _tileRangeCalculator;
late TileScaleCalculator _tileScaleCalculator;

// We have to hold on to the mapController hashCode to determine whether we
Expand All @@ -345,10 +344,14 @@ class _TileLayerState extends State<TileLayer> with TickerProviderStateMixin {
StreamSubscription<TileUpdateEvent>? _tileUpdateSubscription;
Timer? _pruneLater;

late final _resetSub = widget.reset?.listen((_) {
_tileImageManager.removeAll(widget.evictErrorTileStrategy);
if (mounted) _loadAndPruneInVisibleBounds(MapCamera.of(context));
});
StreamSubscription<void>? _resetSub;

@override
void initState() {
super.initState();
_resetSub = widget.reset?.listen(_resetStreamHandler);
_tileRangeCalculator = TileRangeCalculator(tileSize: widget.tileSize);
}

// This is called on every map movement so we should avoid expensive logic
// where possible, or filter as necessary
Expand Down Expand Up @@ -452,6 +455,11 @@ class _TileLayerState extends State<TileLayer> with TickerProviderStateMixin {
} else if (oldWidget.tileDisplay != widget.tileDisplay) {
_tileImageManager.updateTileDisplay(widget.tileDisplay);
}

if (widget.reset != oldWidget.reset) {
_resetSub?.cancel();
_resetSub = widget.reset?.listen(_resetStreamHandler);
}
}

@override
Expand Down Expand Up @@ -706,6 +714,11 @@ class _TileLayerState extends State<TileLayer> with TickerProviderStateMixin {

bool _outsideZoomLimits(num zoom) =>
zoom < widget.minZoom || zoom > widget.maxZoom;

void _resetStreamHandler(void _) {
_tileImageManager.removeAll(widget.evictErrorTileStrategy);
if (mounted) _loadAndPruneInVisibleBounds(MapCamera.of(context));
}
}

double _distanceSq(TileCoordinates coord, Point<double> center) {
Expand Down

0 comments on commit 8136ef0

Please sign in to comment.