File tree Expand file tree Collapse file tree 2 files changed +39
-1
lines changed
Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Original file line number Diff line number Diff line change 1+ import 'package:flutter/foundation.dart' ;
2+ import 'package:flutter_map/src/layer/tile_layer/tile_coordinates.dart' ;
3+ import 'package:flutter_map/src/layer/tile_layer/tile_image.dart' ;
4+ import 'package:flutter_map/src/layer/tile_layer/tile_renderer.dart' ;
5+
6+ /// A key that identifies rendering of a [TileImage] at given [TileCoordinates] .
7+ ///
8+ /// Two [TileKey] s are equal when they reference the same [TileImage]
9+ /// instance and have equal [positionCoordinates] .
10+ final class TileKey extends LocalKey {
11+ /// Tile image to identify by instance.
12+ final TileImage tileImage;
13+
14+ /// Position where [tileImage] is rendered.
15+ final TileCoordinates positionCoordinates;
16+
17+ /// Creates a [TileKey] for the given [TileRenderer] .
18+ ///
19+ /// The [tileImage] is compared by identity, while [positionCoordinates] are
20+ /// compared by value.
21+ TileKey (TileRenderer renderer)
22+ : tileImage = renderer.tileImage,
23+ positionCoordinates = renderer.positionCoordinates;
24+
25+ @override
26+ bool operator == (Object other) {
27+ return other is TileKey &&
28+ identical (other.tileImage, tileImage) &&
29+ other.positionCoordinates == positionCoordinates;
30+ }
31+
32+ @override
33+ int get hashCode => Object .hash (
34+ identityHashCode (tileImage),
35+ positionCoordinates,
36+ );
37+ }
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import 'package:flutter_map/src/layer/tile_layer/tile.dart';
99import 'package:flutter_map/src/layer/tile_layer/tile_bounds/tile_bounds.dart' ;
1010import 'package:flutter_map/src/layer/tile_layer/tile_bounds/tile_bounds_at_zoom.dart' ;
1111import 'package:flutter_map/src/layer/tile_layer/tile_image_manager.dart' ;
12+ import 'package:flutter_map/src/layer/tile_layer/tile_key.dart' ;
1213import 'package:flutter_map/src/layer/tile_layer/tile_range.dart' ;
1314import 'package:flutter_map/src/layer/tile_layer/tile_range_calculator.dart' ;
1415import 'package:flutter_map/src/layer/tile_layer/tile_scale_calculator.dart' ;
@@ -560,7 +561,7 @@ class _TileLayerState extends State<TileLayer> with TickerProviderStateMixin {
560561 .map ((tileRenderer) => Tile (
561562 // Must be an ObjectKey, not a ValueKey using the coordinates, in
562563 // case we remove and replace the TileImage with a different one.
563- key: ObjectKey (tileRenderer),
564+ key: TileKey (tileRenderer),
564565 scaledTileDimension: _tileScaleCalculator.scaledTileDimension (
565566 map.zoom,
566567 tileRenderer.positionCoordinates.z,
You can’t perform that action at this time.
0 commit comments