import 'dart:async'; import 'dart:convert'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:managerapi/api.dart'; import 'package:provider/provider.dart'; import 'package:tablet_app/Components/loading.dart'; import 'package:tablet_app/Models/map-marker.dart'; import 'dart:ui' as ui; import 'package:flutter/widgets.dart'; import 'package:tablet_app/Screens/Map/marker_view.dart'; import '../../app_context.dart'; import 'google_map_view.dart'; Set markers = {}; List markersList = List(); class MapViewWidget extends StatefulWidget { final SectionDTO section; MapViewWidget({Key key, this.section}) : super(key: key); @override _MapViewWidget createState() => _MapViewWidget(); } class _MapViewWidget extends State { MapDTO mapDTO; Completer _controller = Completer(); Uint8List selectedMarkerIcon; Future getBytesFromAsset(ByteData data, int width) async { //ByteData data = await rootBundle.load(path); ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List(), targetWidth: width); ui.FrameInfo fi = await codec.getNextFrame(); return (await fi.image.toByteData(format: ui.ImageByteFormat.png)) .buffer .asUint8List(); } @override void initState() { print(widget.section.data); mapDTO = MapDTO.fromJson(jsonDecode(widget.section.data)); print(mapDTO); super.initState(); } @override void dispose() { // TODO: implement dispose super.dispose(); } /*static final CameraPosition _kLake = CameraPosition( bearing: 192.8334901395799, target: LatLng(37.43296265331129, -122.08832357078792), tilt: 59.440717697143555, zoom: 59.151926040649414);*/ @override Widget build(BuildContext context) { //final mapContext = Provider.of(context); final appContext = Provider.of(context); return Stack( children: [ FutureBuilder( future: getByteIcon(mapDTO.iconSource), builder: (context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.done) { return GoogleMapView(language: appContext.getContext().language, mapDTO: mapDTO, selectedMarkerIcon: selectedMarkerIcon); } else if (snapshot.connectionState == ConnectionState.none) { return Text("No data"); } else { return Center( child: Container( child: Loading() ) ); } } ), MarkerViewWidget() ] /*floatingActionButton: FloatingActionButton.extended( onPressed: _goToTheLake, label: Text('To the lake!'), icon: Icon(Icons.directions_boat), ),*/ ); } getByteIcon(String source) async { final ByteData imageData = await NetworkAssetBundle(Uri.parse(source)).load(""); selectedMarkerIcon = await getBytesFromAsset(imageData, 50); } /*Future _goToTheLake() async { final GoogleMapController controller = await _controller.future; controller.animateCamera(CameraUpdate.newCameraPosition(_kLake)); }*/ }