Untitled
unknown
dart
3 years ago
2.5 kB
6
Indexable
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:untitled1/models/robot_location.dart';
class Home extends StatefulWidget {
final BitmapDescriptor customMarker;
final String modelNo;
const Home({required this.customMarker, required this.modelNo});
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
late Marker robotMarker;
Map<MarkerId, Marker> markers = <MarkerId, Marker>{};
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('My Robot'),
leading: BackButton(
onPressed: () {
// Navigator.push(context, MaterialPageRoute(builder: (context)=>HomeScreen()));
},
),
),
body: StreamBuilder<DocumentSnapshot>(
stream: FirebaseFirestore.instance
.collection('Location')
.doc(widget.modelNo.toString())
.snapshots(),
builder: (context, snapshot) {
if (snapshot.data == null) {
return const SizedBox();
}
if (!snapshot.hasData) {
return const SizedBox();
}
if (snapshot.data!.data() == null) {
return const SizedBox();
}
RobotLocation loc = RobotLocation.fromJson(
snapshot.data!.data() as Map<String, dynamic>);
LatLng robotLatLng = LatLng(loc.lat!, loc.lng!);
chageRobotMarkerLocation(robotLatLng);
return GoogleMap(
initialCameraPosition:
CameraPosition(target: robotLatLng, zoom: 17),
onMapCreated: (GoogleMapController googleMapController) async {
chageRobotMarkerLocation(robotLatLng);
},
markers: Set<Marker>.of(markers.values),
);
},
),
);
}
void chageRobotMarkerLocation(LatLng locInfo) {
WidgetsBinding.instance.addPostFrameCallback((_) {
robotMarker = Marker(
markerId: const MarkerId('robotLocation'),
position: LatLng(locInfo.latitude, locInfo.longitude),
draggable: false,
icon: widget.customMarker);
markers[const MarkerId('robotLocation')] = robotMarker;
setState(() {});
});
}
}
Editor is loading...