buildMapTileLayer function
- required MapSettings mapSettings,
- required TileProvider tileProvider,
- required bool applyFilter,
Builds the tile layer with optional dark mode filter.
Implementation
Widget buildMapTileLayer({
required MapSettings mapSettings,
required TileProvider tileProvider,
required bool applyFilter,
}) {
return ColorFiltered(
colorFilter: applyFilter
? const ColorFilter.matrix(midnightMatrix)
: const ColorFilter.mode(Colors.transparent, BlendMode.dst),
child: TileLayer(
// Use ObjectKey with tileProvider to ensure fresh TileLayer when provider changes
// This prevents widget reuse issues when app resumes with a new provider.
key: ObjectKey(tileProvider),
urlTemplate: mapSettings.mapSource.urlTemplate,
subdomains: mapSettings.mapSource.subdomains,
userAgentPackageName: 'com.togaware.geopod',
tileProvider: tileProvider,
keepBuffer: 1,
panBuffer: 1,
maxZoom: 19,
maxNativeZoom: mapSettings.mapSource.maxNativeZoom,
retinaMode: false,
tileUpdateTransformer: TileUpdateTransformers.throttle(
const Duration(milliseconds: 100),
),
),
);
}