Skip to content

Commit ea79e2a

Browse files
authored
fix: multiple bugs when neither wmsOptions nor urlTemplate were provided (#1701)
1 parent 83d773d commit ea79e2a

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

lib/src/layer/tile_layer/tile_layer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class TileLayer extends StatefulWidget {
338338

339339
// Retina Mode Setup
340340
resolvedRetinaMode = (retinaMode ?? false)
341-
? wmsOptions == null && urlTemplate!.contains('{r}')
341+
? wmsOptions == null && (urlTemplate?.contains('{r}') ?? false)
342342
? RetinaMode.server
343343
: RetinaMode.simulation
344344
: RetinaMode.disabled;

lib/src/layer/tile_layer/tile_provider/base_tile_provider.dart

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,20 @@ abstract class TileProvider {
215215
/// 1. [populateTemplatePlaceholders]
216216
/// 2. [generateReplacementMap]
217217
/// 3. [getTileUrl] and/or [getTileFallbackUrl]
218+
///
219+
/// Note to implementors: it is not safe to assume that at least one of
220+
/// `wmsOptions` or `urlTemplate` will be non-null.
218221
/// {@endtemplate}
219222
String getTileUrl(TileCoordinates coordinates, TileLayer options) =>
220223
populateTemplatePlaceholders(
221-
options.wmsOptions != null
222-
? options.wmsOptions!.getUrl(
223-
coordinates,
224-
options.tileSize.toInt(),
225-
options.resolvedRetinaMode == RetinaMode.simulation,
226-
)
227-
: options.urlTemplate!,
224+
options.wmsOptions?.getUrl(
225+
coordinates,
226+
options.tileSize.toInt(),
227+
options.resolvedRetinaMode == RetinaMode.simulation,
228+
) ??
229+
options.urlTemplate ??
230+
(throw ArgumentError(
231+
'`wmsOptions` or `urlTemplate` must be provided to generate a tile URL')),
228232
coordinates,
229233
options,
230234
);

0 commit comments

Comments
 (0)