summaryrefslogtreecommitdiff
path: root/lib/screens/map_screen.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/screens/map_screen.dart')
-rw-r--r--lib/screens/map_screen.dart85
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart
new file mode 100644
index 0000000..db224e4
--- /dev/null
+++ b/lib/screens/map_screen.dart
@@ -0,0 +1,85 @@
+import 'dart:async';
+
+import 'package:circular_menu/circular_menu.dart';
+import 'package:flutter/material.dart';
+import 'package:google_maps_flutter/google_maps_flutter.dart';
+
+class MapSample extends StatefulWidget {
+ const MapSample({super.key});
+
+ @override
+ State<MapSample> createState() => MapSampleState();
+}
+
+class MapSampleState extends State<MapSample> {
+ // MapType tipoMapa = MapType.normal;
+ ValueNotifier<MapType> tipoMapa = ValueNotifier(MapType.normal);
+
+ final Completer<GoogleMapController> _controller =
+ Completer<GoogleMapController>();
+
+ static const CameraPosition _kGooglePlex = CameraPosition(
+ target: LatLng(37.42796133580664, -122.085749655962),
+ zoom: 14.4746,
+ );
+
+ static const CameraPosition _kLake = CameraPosition(
+ bearing: 192.8334901395799,
+ target: LatLng(37.43296265331129, -122.08832357078792),
+ tilt: 59.440717697143555,
+ zoom: 19.151926040649414);
+
+ CircularMenu circularMenu() => CircularMenu(items: [
+ CircularMenuItem(
+ icon: Icons.map,
+ onTap: () {
+ tipoMapa.value = MapType.normal;
+ },
+ ),
+ CircularMenuItem(
+ icon: Icons.satellite,
+ onTap: () {
+ tipoMapa.value = MapType.satellite;
+ },
+ ),
+ CircularMenuItem(
+ icon: Icons.terrain,
+ onTap: () {
+ tipoMapa.value = MapType.terrain;
+ },
+ ),
+ CircularMenuItem(
+ icon: Icons.star,
+ onTap: () {
+ tipoMapa.value = MapType.hybrid;
+ },
+ ),
+ ]);
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ body: ValueListenableBuilder(
+ valueListenable: tipoMapa,
+ builder: (context, value, child) => GoogleMap(
+ mapType: value,
+ initialCameraPosition: _kGooglePlex,
+ onMapCreated: (GoogleMapController controller) {
+ _controller.complete(controller);
+ },
+ ),
+ ),
+ // floatingActionButton: FloatingActionButton.extended(
+ // onPressed: _goToTheLake,
+ // label: const Text('To the lake!'),
+ // icon: const Icon(Icons.directions_boat),
+ // ),
+ floatingActionButton: circularMenu(),
+ );
+ }
+
+ Future<void> _goToTheLake() async {
+ final GoogleMapController controller = await _controller.future;
+ controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
+ }
+}