//import 'dart:async'; import 'dart:convert'; // 'dart:typed_data'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; // 'package:flutter/services.dart'; //import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:manager_api/api.dart'; import 'package:provider/provider.dart'; /*import 'package:tablet_app/Components/loading.dart'; import 'package:tablet_app/Components/loading_common.dart';*/ import 'package:tablet_app/Models/map-marker.dart'; //import 'dart:ui' as ui; import 'package:flutter/widgets.dart'; import 'package:tablet_app/Models/tabletContext.dart'; import 'package:tablet_app/Screens/Map/geo_point_filter.dart'; import 'package:tablet_app/Screens/Map/map_box_view.dart'; import 'package:tablet_app/Screens/Map/marker_view.dart'; //import 'package:http/http.dart' as http; import '../../app_context.dart'; import 'google_map_view.dart'; //import 'package:image/image.dart' as IMG; //Set markers = {}; List markersList = []; class MapViewWidget extends StatefulWidget { final SectionDTO section; final List> icons; MapViewWidget({Key? key, required this.section, required this.icons}) : super(key: key); @override _MapViewWidget createState() => _MapViewWidget(); } class _MapViewWidget extends State { MapDTO? mapDTO; //Completer _controller = Completer(); //Uint8List? selectedMarkerIcon; late ValueNotifier> _geoPoints = ValueNotifier>([]); /*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() { mapDTO = MapDTO.fromJson(jsonDecode(widget.section.data!)); _geoPoints.value = mapDTO!.points!; 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); TabletAppContext tabletAppContext = appContext.getContext() as TabletAppContext; /*return FutureBuilder( future: getByteIcon(mapDTO!.iconSource), builder: (context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.done) { } else if (snapshot.connectionState == ConnectionState.none) { return Text("No data"); } else { return Center( child: Container( child: LoadingCommon() ) ); } } );*/ return Stack( children: [ ValueListenableBuilder>( valueListenable: _geoPoints, builder: (context, value, _) { switch(mapDTO!.mapProvider) { case MapProvider.Google: return GoogleMapView(language: appContext.getContext().language, geoPoints: value, mapDTO: mapDTO!, icons: widget.icons); case MapProvider.MapBox: return MapBoxView(language: appContext.getContext().language, geoPoints: value, mapDTO: mapDTO, icons: widget.icons); default: // By default google return GoogleMapView(language: appContext.getContext().language, geoPoints: value, mapDTO: mapDTO!, icons: widget.icons); } } ), GeoPointFilter( language: tabletAppContext.language!, geoPoints: mapDTO!.points!, categories: mapDTO!.categories!, provider: mapDTO!.mapProvider == null ? MapProvider.Google : mapDTO!.mapProvider!, filteredPoints: (value) { _geoPoints.value = value!; }), MarkerViewWidget(), ] /*floatingActionButton: FloatingActionButton.extended( onPressed: _goToTheLake, label: Text('To the lake!'), icon: Icon(Icons.directions_boat), ),*/ ); } /*getByteIcon(String? source) async { if(source != null) { if(kIsWeb) { Uint8List fileData = await http.readBytes(Uri.parse(source)); selectedMarkerIcon = resizeImage(fileData, 40); } else { final ByteData imageData = await NetworkAssetBundle(Uri.parse(source)).load(""); selectedMarkerIcon = await getBytesFromAsset(imageData, 50); } } else { // default icon final ByteData bytes = await rootBundle.load('assets/icons/marker.png'); selectedMarkerIcon = await getBytesFromAsset(bytes, 25); } }*/ /*Uint8List resizeImage(Uint8List data, int width) { Uint8List resizedData = data; IMG.Image img = IMG.decodeImage(data)!; IMG.Image resized = IMG.copyResize(img, width: width); resizedData = Uint8List.fromList(IMG.encodeJpg(resized)); return resizedData; }*/ /*Future _goToTheLake() async { final GoogleMapController controller = await _controller.future; controller.animateCamera(CameraUpdate.newCameraPosition(_kLake)); }*/ }