Флаттер: Listview от маркеров - PullRequest
       48

Флаттер: Listview от маркеров

0 голосов
/ 23 октября 2019

Мне нужен просмотр списка, который соответствует маркерам, созданным этим кодом. Печать document.data работает, но не в правильном формате для просмотра списка. приветствуется любая помощь или предложения.

import 'package:geo_firestore/geo_firestore.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class SlocateWidget extends StatefulWidget {
  @override
  SlocateWidgetState createState() => SlocateWidgetState();
}

Firestore firestore = Firestore.instance;
GeoFirestore geoFirestore = GeoFirestore(firestore.collection('chatrooms'));

class SlocateWidgetState extends State<SlocateWidget> {
  GoogleMapController mapController;
  String error;
  bool currentWidget = true;
  var currentLocation;
  var clients = [];
  void initMarker(client, markerRef) {
  var markerIDVal = markerRef;
  final MarkerId markerId = MarkerId(markerIDVal);
  Map<MarkerId, Marker> markers = <MarkerId, Marker>{};

  @override
  void initState() {
    super.initState();
   // populateClients();
    Geolocator().getCurrentPosition().then((currloc) {
      setState(() {
        currentLocation = currloc;

      });
    });
  }

  populateClients() async {
    Position position = await Geolocator()
        .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    final queryLocation = GeoPoint(position.latitude, position.longitude);
    final List<DocumentSnapshot> documents =
        await geoFirestore.getAtLocation(queryLocation, 10.0);
    documents.forEach((document) {
      print(document.data);
    });

        if (documents.isNotEmpty) {
      for (int i = 0; i < documents.length; i++) {
        clients.add(documents[i].data);
        initMarker(documents[i].data, documents[i].documentID);
      }
    }

    final Marker marker = Marker(
      position:
          LatLng(client['location'].latitude, client['location'].longitude),
      markerId: markerId,
      icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueAzure),
    );

    setState(() {
      // adding a new marker to map
      markers[markerId] = marker;
    });
  }
}

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return null;
  }}

Я не включил код для карты Google, но могу при необходимости. Мне даже не нужно местоположение для обновления в реальном времени, только для просмотра списка, и, возможно, для обновления, если это необходимо. если у кого-то есть лучший подход, я готов попробовать что-то новое, чтобы заставить это работать.

...