No Scaffold widget found

Bonjour à tous,

Je rencontre un problème suite à la mise à jour de mon application et de ses dépendances. En cliquant sur un POI de ma vue PickingView, j’affichais un widget de description. Cette fonctionnalité ne fonctionne plus et j’obtiens l’erreur suivante :

════════ Exception caught by gesture ═══════════════════════════════════════════
No Scaffold widget found.
The ancestors of this widget were:
════════════════════════════════════════════════════════════════════════════════

Voici le bout de code qui génère le problème :

class PickingView extends StatefulWidget {
  final IPickingViewModel _viewModel;
  final IBottomNavigationBarWidget _bottomNavigationBarWidget;

  const PickingView(this._viewModel, this._bottomNavigationBarWidget,
      {super.key});

  @override
  State<PickingView> createState() => _PickingViewState();
}

class _PickingViewState extends State<PickingView> {
  @override
  void initState() {
    super.initState();
    widget._viewModel.getLastUserLocalisation();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: AnimatedBuilder(
          animation: widget._viewModel,
          builder: (context, child) {
            return Stack(
              children: [
                // Widget de gestion de la map
                FlutterMap(
                  mapController: widget._viewModel.mapController,
                  options: MapOptions(
                      interactionOptions: const InteractionOptions(
                          flags: InteractiveFlag.all & ~InteractiveFlag.rotate),
                      onMapReady: (() {
                        widget._viewModel.checkUserLocation();
                        setState(() {});
                      }),
                      // Désactivation du centrage automatique dès qu'on détecte une interaction avec la map
                      onPointerDown: (event, point) =>
                          widget._viewModel.isPointerMode(),
                      initialCenter: LatLng(widget._viewModel.latitude,
                          widget._viewModel.longitude),
                      initialZoom: 15.0,
                      minZoom: 1.0,
                      maxZoom: 18.0,
                      cameraConstraint: CameraConstraint.contain(
                          bounds: LatLngBounds(
                        const LatLng(-90, -180.0),
                        const LatLng(90.0, 180.0),
                      )),
                      keepAlive: false),
                  children: [
                    TileLayer(
                      urlTemplate:
                          "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
                      userAgentPackageName: 'com.pickfungi.app',
                    ),
                    MarkerLayer(
                      markers: getMarker(),
                    )
                  ],
                ),

...
List<Marker> getMarker() {
    final List<Marker> myMarkers = [];
    for (var marker in widget._viewModel.poiMarkerList) {
      switch (marker.category) {
         case PoiCategory.boletus:
           myMarkers.add(Marker(
              point: LatLng(marker.latitude, marker.longitude),
              width: 50,
              height: 50,
              alignment: Alignment.topCenter,
              child: GestureDetector(
                  onTap: () {
                    showBottomSheet(
                        context: context,
                        builder: (context) => ShowPoiBottomSheet(
                            widget._viewModel,
                            marker: marker));
                    setState(() {});
                  },
                  child: const Image(
                    image: AssetImage("images/bolet_poi_icon.png"),
                    height: 50.0,
                  ))));

En fouillant sur le net, j’ai l’impression que le problème vient du context et du paramètre « key » mais je ne comprends pas bien ce qui a changé entre avant et après la mise à jour.

Si quelqu’un peut m’aider :slight_smile:
Merci d’avance !

J’ai finalement trouvé comment résoudre mon soucis. J’ai juste ajouté le paramètre context dans l’appel de ma fonction et ca a résolu le sujet. Je ne comprends pas vraiment pourquoi cela marchait avant mes mises à jour, ça fera l’objet d’une question au prochain coaching :slight_smile:

Voici le bout de code corrigé :

MarkerLayer(
  markers: getMarker(context),
)

...

List<Marker> getMarker(context) {