mirror of
https://bitbucket.org/FransoletThomas/tablet-app.git
synced 2025-12-06 00:21:19 +00:00
109 lines
3.4 KiB
Dart
109 lines
3.4 KiB
Dart
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<Marker> markers = {};
|
|
List<MapMarker> 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<MapViewWidget> {
|
|
MapDTO mapDTO;
|
|
Completer<GoogleMapController> _controller = Completer();
|
|
Uint8List selectedMarkerIcon;
|
|
|
|
Future<Uint8List> 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<MapContext>(context);
|
|
final appContext = Provider.of<AppContext>(context);
|
|
return Stack(
|
|
children: <Widget>[
|
|
FutureBuilder(
|
|
future: getByteIcon(mapDTO.iconSource),
|
|
builder: (context, AsyncSnapshot<dynamic> 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<void> _goToTheLake() async {
|
|
final GoogleMapController controller = await _controller.future;
|
|
controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
|
|
}*/
|
|
|
|
}
|
|
|