Description
What is the bug?
A crash was reported on one of my user's devices.
Unfortunately, no logs were sent with it so I only have the stacktrace, but I don't know what happened...
I am very sorry that I can't provide a minimal reproducible example or anything else, but I thought it's probably good to report this here anyways.
This occurred on a non-rooted Android 15 phone in portrait mode. That's all I know :(
This is what my map looks like:
final MapController _mapController = MapController();
late final StreamController<double?> _alignPositionStreamController;
/// ...
return FlutterMap(
mapController: _mapController,
options: MapOptions(
keepAlive: true,
initialCenter: provider.center,
initialZoom: provider.center.zoom,
initialRotation: provider.center.rotation,
),
children: [
TileLayer(
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
userAgentPackageName: _packageName,
tileProvider: NetworkTileProvider(silenceExceptions: true),
),
_floorLayer(provider),
if (locationReady) _currentLocationLayer(),
if (_showMarker) _markerLayer(provider),
],
);
/// here are the layers:
Widget _floorLayer(AppDataProvider provider) {
return Consumer<AppDataProvider>(
builder: (context, provider, _) {
String mapAsset = provider.mapAsset;
return IgnorePointer(
child: OverlayImageLayer(
overlayImages: [
RotatedOverlayImage(
bottomLeftCorner: provider.mapBotLeft,
bottomRightCorner: provider.mapBotRight,
topLeftCorner: provider.mapTopLeft,
imageProvider:
AssetImage(mapAsset),
),
],
),
);
},
);
}
Widget _currentLocationLayer() {
return IgnorePointer(
child: CurrentLocationLayer(
alignPositionStream: _alignPositionStreamController.stream,
style: LocationMarkerStyle(
783A
accuracyCircleColor: AppConfig.instance.color.withAlpha(32),
headingSectorColor: AppConfig.instance.color.withAlpha(32),
headingSectorRadius: 10,
marker: DefaultLocationMarker(color: color),
),
),
);
}
Widget _markerLayer(AppDataProvider provider) {
return IgnorePointer(
child: MarkerLayer(markers: [
Marker(
point: provider.marker,
child: Image.asset(AppConfig.instance.markerIcon),
width: 40,
height: 40)
]),
);
}
It was caused in flutter_map/src/layer/shared/feature_layer_utils.dart:66
.
Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: Stack Overflow. Error thrown .
at FeatureLayerUtils.workAcrossWorlds.protectInfiniteLoop(feature_layer_utils.dart:66)
at FeatureLayerUtils.workAcrossWorlds(feature_layer_utils.dart:87)
at CirclePainter.paint(painter.dart:105)
at RenderCustomPaint._paintWithPainter(custom_paint.dart:593)
at RenderCustomPaint.paint(custom_paint.dart:641)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at PaintingContext.pushTransform(object.dart:798)
at RenderTransform.paint(proxy_box.dart:2686)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderShiftedBox.paint(shifted_box.dart:81)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderBoxContainerDefaultsMixin.defaultPaint(box.dart:3372)
at RenderStack.paintStack(stack.dart:704)
at RenderStack.paint(stack.dart:720)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderBoxContainerDefaultsMixin.defaultPaint(box.dart:3372)
at RenderStack.paintStack(stack.dart:704)
at RenderStack.paint(stack.dart:720)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at PaintingContext.pushLayer(object.dart:507)
at PaintingContext.pushClipRect(object.dart:574)
at RenderClipRect.paint(proxy_box.dart:1576)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at _RenderLayoutBuilder.paint(layout_builder.dart:472)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext.paintChild(object.dart:261)
at RenderProxyBoxMixin.paint(proxy_box.dart:140)
at RenderObject._paintWithContext(object.dart:3483)
at PaintingContext._repaintCompositedChild(object.dart:176)
at PaintingContext.repaintCompositedChild(object.dart:121)
at PipelineOwner.flushPaint(object.dart:1312)
at PipelineOwner.flushPaint(object.dart:1322)
at RendererBinding.drawFrame(binding.dart:631)
at WidgetsBinding.drawFrame(binding.dart:1242)
at RendererBinding._handlePersistentFrameCallback(binding.dart:495)
at SchedulerBinding._invokeFrameCallback(binding.dart:1438)
at SchedulerBinding.handleDrawFrame(binding.dart:1351)
at SchedulerBinding._handleDrawFrame(binding.dart:1204)
How can we reproduce it?
I don't know 😭
Do you have a potential solution?
No response