OnMapCreated вызывается каждый раз в просмотре списка с Gridview внутри Listview при прокрутке просмотра списка - PullRequest
0 голосов
/ 04 июля 2019

У меня есть просмотр списка в виде контейнера в теле скаффолда и внутри просмотра списка, у меня есть Gridview и Google, когда я каждый раз прокручиваю чтение карты просмотра списка. Когда я не использую Gridview внутри listview, он работает нормально, или я добавляю карту Google выше Gridview работает нормально, но когда я добавляю карту ниже GridView, она перезагружается каждый раз при прокрутке.

Я пытался инициализировать карту Google только один раз, когда вызывается метод Build, но он не работает

Код дротика

в государственном классе

bool isMapLoaded = false;

    if (!isMapLoaded) {
          isMapLoaded = true;
          googleMap = GoogleMap(
            gestureRecognizers: Set()
              ..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
              ..add(Factory<ScaleGestureRecognizer>(() => ScaleGestureRecognizer()))
              ..add(Factory<TapGestureRecognizer>(() => TapGestureRecognizer()))
              ..add(Factory<VerticalDragGestureRecognizer>(
                  () => VerticalDragGestureRecognizer())),
            mapType: MapType.normal,
            zoomGesturesEnabled: true,
            markers: Set<Marker>.of(markers.values),
            minMaxZoomPreference: MinMaxZoomPreference.unbounded,
            initialCameraPosition: _initialCamera,
            onMapCreated: (GoogleMapController googleMapController) {
              print("Map Created");
              _mapController = googleMapController;
              _gController.complete(googleMapController);
            },
          );

   isMapLoading = true;
        }

ошибка ничего не показывает в Logcat

Мой Listview с реализацией Gridview находится здесь

// другие контролируют как текст и редактируют текст

final itemGridDelegate = new SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisSpacing: 5.0,
        mainAxisSpacing: 5.0,
        crossAxisCount: 2,
        childAspectRatio: 5.0);

    final propertyTypeGridview = new Container(
      child: new Container(
        padding: EdgeInsets.only(top: 20.0),
        color: Colors.white,
        child: GridView.builder(
          physics: ClampingScrollPhysics(),
          gridDelegate: itemGridDelegate,
          shrinkWrap: true,
          itemCount: propertyTypeList.length,
          itemBuilder: (BuildContext context, int index) {
            return _buildPropertyTypeItems(index, context);
          },
        ),
      ),
    );

googleMap = GoogleMap(
        gestureRecognizers: Set()
          ..add(Factory<PanGestureRecognizer>(() => PanGestureRecognizer()))
          ..add(Factory<ScaleGestureRecognizer>(() => ScaleGestureRecognizer()))
          ..add(Factory<TapGestureRecognizer>(() => TapGestureRecognizer()))
          ..add(Factory<VerticalDragGestureRecognizer>(
              () => VerticalDragGestureRecognizer())),
        mapType: MapType.normal,
        zoomGesturesEnabled: true,
        markers: Set<Marker>.of(markers.values),
        minMaxZoomPreference: MinMaxZoomPreference.unbounded,
        initialCameraPosition: _initialCamera,
        onMapCreated: (GoogleMapController googleMapController) {
          print("Map Created");
          _mapController = googleMapController;
          _gController.complete(googleMapController);
        },
      );

 final mapView = new Container(
        height: 200,
        width: double.infinity,
        margin: EdgeInsets.only(top: 20.0),
        child: new ClipRRect(
            borderRadius: BorderRadius.all(Radius.circular(20.0)),
            child: googleMap));

// final listview

[![propertyTypeGridview and property featuresGridview are both Gridview 

     final mainListview = new ListView(
          padding: EdgeInsets.all(15.0),
          children: <Widget>\[
            tvAddImage,
            propertyThumbnailList,
            tvPropertyAddress,
            edPropertyAddress,
            tvSuberb,
            edPropertySuberb,
            tvState,
            edState,
            tvPostcode,
            edPropertyPostcode,
            tvSalesPrice,
            edPropertySalesPrice,
            tvRentalPrice,edTRental,
            tvPropertyInfo,
            edPropertyInfo,
            tvSelect,
            propertyTypeGridview,
            tvPropertyFeatures,
            propertyFeaturesGrid,
            mapView,
          \],
        );

        final scaffold = new Scaffold(
          body: mainListview,
        );][1]][1]

Я попробовал, это работает нормально, если я применю следующие изменения.

final mainListview = new ListView(
          padding: EdgeInsets.all(15.0),
          children: <Widget>[
            tvAddImage,
            propertyThumbnailList,
            tvPropertyAddress,
            edPropertyAddress,
            tvSuberb,
            edPropertySuberb,
            tvState,
            edState,
            tvPostcode,
            edPropertyPostcode,
            tvSalesPrice,
            edPropertySalesPrice,
            tvRentalPrice,edTRental,
            tvPropertyInfo,
            edPropertyInfo,
            mapView,
            tvSelect,
            propertyTypeGridview,
            tvPropertyFeatures,
            propertyFeaturesGrid,

          ],
        );

Но это не будет работать, если я применю следующие изменения

final mainListview = new ListView(
              padding: EdgeInsets.all(15.0),
              children: <Widget>[
                tvAddImage,
                propertyThumbnailList,
                tvPropertyAddress,
                edPropertyAddress,
                tvSuberb,
                edPropertySuberb,
                tvState,
                edState,
                tvPostcode,
                edPropertyPostcode,
                tvSalesPrice,
                edPropertySalesPrice,
                tvRentalPrice,edTRental,
                tvPropertyInfo,
                edPropertyInfo,
                tvSelect,
                propertyTypeGridview,
                tvPropertyFeatures,
                propertyFeaturesGrid,
                mapView,],
            );

and I want this screen 

https://i.stack.imgur.com/LIsBX.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...