Added load local cert + misc map

This commit is contained in:
Thomas Fransolet 2024-08-23 11:44:34 +02:00
parent dfa3cc6458
commit 2953c769f7
9 changed files with 110 additions and 29 deletions

Binary file not shown.

View File

@ -34,7 +34,7 @@ class ConfigViewWidget extends StatefulWidget {
class _ConfigViewWidget extends State<ConfigViewWidget> {
Size sizeScreen = new Size(1080.0, 1920.0); // Tablet resolution
String url = "https://api.mymuseum.be"; //DEV "http://192.168.31.96" http://192.168.31.140:8089 // PROD MDLF "http://192.168.1.19"
String url = "https://api.myinfomate.be"; //DEV "http://192.168.31.96" http://192.168.31.140:8089 // PROD MDLF "http://192.168.1.19"
int? pinCode;
bool configOk = false;

View File

@ -57,7 +57,7 @@ class _FlutterMapViewState extends State<FlutterMapView> {
mapContext.setSelectedPoint(point);
mapContext.setSelectedPointForNavigate(point);*/
mapContext.setSelectedPoint(point);
mapContext.setSelectedPointForNavigate(point);
//mapContext.setSelectedPointForNavigate(point);
},
child: widget.icons.firstWhere((i) => i['id'] == point.categorieId, orElse: () => widget.icons.first)['icon'] != null ? Image.memory(widget.icons.firstWhere((i) => i['id'] == point.categorieId, orElse: () => widget.icons.first)['icon']) : Icon(Icons.pin_drop, color: Colors.red),//widget.icons.firstWhere((i) => i['id'] == point.categorieId, orElse: () => widget.icons.first)['icon'],
)
@ -122,7 +122,7 @@ class _FlutterMapViewState extends State<FlutterMapView> {
var geoPoint = mapContext.getSelectedPointForNavigate() as GeoPointDTO?;
if (geoPoint != null && mapController != null) {
print("COUCOU IL FAUT NAVIGATE FLUTTER MAP");
mapController!.move(LatLng(double.tryParse(geoPoint.latitude!)!, double.tryParse(geoPoint.longitude!)!), 16);
mapController!.move(LatLng(double.tryParse(geoPoint.latitude!)!, double.tryParse(geoPoint.longitude!)!), mapController!.camera.zoom/*, widget.mapDTO!.zoom != null ? widget.mapDTO!.zoom!.toDouble() : 16*/); // keep actual zoom
}
return SizedBox();
},

View File

@ -154,16 +154,49 @@ class _GeoPointFilterState extends State<GeoPointFilter> {
if (node.children.isNotEmpty) {
for (var childNode in node.children) {
if (childNode.checked) {
checkedGeoPoints.add(widget.geoPoints.firstWhere((point) => int.parse(
(point.latitude ?? '').substring(0, min(point.latitude!.length, 10)).replaceAll(".", "").replaceAll("-", "") + (point.longitude ?? '').substring(0, min(point.longitude!.length, 10)).replaceAll(".", "").replaceAll("-", "")
) == childNode.id));
var point = widget.geoPoints.firstWhere(
(point) {
String latitudePart = (point.latitude ?? '')
.substring(0, min(point.latitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
String longitudePart = (point.longitude ?? '')
.substring(0, min(point.longitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
int combinedValue = int.parse(latitudePart + longitudePart);
return combinedValue == node.id;
},
orElse: () => GeoPointDTO(id: -1),
);
if (point.id != -1) {
checkedGeoPoints.add(point);
}
}
}
} else {
if(node.checked) {
checkedGeoPoints.add(widget.geoPoints.firstWhere((point) => int.parse(
(point.latitude ?? '').substring(0, min(point.latitude!.length, 10)).replaceAll(".", "").replaceAll("-", "") + (point.longitude ?? '').substring(0, min(point.longitude!.length, 10)).replaceAll(".", "").replaceAll("-", "")
) == node.id));
var point = widget.geoPoints.firstWhere(
(point) {
String latitudePart = (point.latitude ?? '')
.substring(0, min(point.latitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
String longitudePart = (point.longitude ?? '')
.substring(0, min(point.longitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
int combinedValue = int.parse(latitudePart + longitudePart);
return combinedValue == node.id;
},
orElse: () => GeoPointDTO(id: -1),
);
if (point.id != -1) {
checkedGeoPoints.add(point);
}
}
}
}
@ -305,11 +338,29 @@ class _GeoPointFilterState extends State<GeoPointFilter> {
sendFilteredGeoPoint();
},
onClicked: (node, commonID) {
print("its clicked ! " + commonID.toString());
var selectedNode = widget.geoPoints.firstWhere((point) => int.parse(
(point.latitude ?? '').substring(0, min(point.latitude!.length, 10)).replaceAll(".", "").replaceAll("-", "") + (point.longitude ?? '').substring(0, min(point.longitude!.length, 10)).replaceAll(".", "").replaceAll("-", "")
) == commonID);
var selectedNode = widget.geoPoints.firstWhere(
(point) {
String latitudePart = (point.latitude ?? '')
.substring(0, min(point.latitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
String longitudePart = (point.longitude ?? '')
.substring(0, min(point.longitude!.length, 10))
.replaceAll(".", "")
.replaceAll("-", "");
int combinedValue = int.parse(latitudePart + longitudePart);
return combinedValue == commonID;
},
orElse: () => GeoPointDTO(id: -1),
);
if (selectedNode.id != -1) {
mapContext.setSelectedPointForNavigate(selectedNode);
} else {
print('Aucun point correspondant trouvé.');
}
},
checkBoxColor: primaryColor,
childrenPadding: EdgeInsets.only(left: 20, top: 10, right: 0, bottom: 10),

View File

@ -67,7 +67,7 @@ class _GoogleMapViewState extends State<GoogleMapView> {
onTap: () {
//setState(() {
mapContext.setSelectedPoint(point);
mapContext.setSelectedPointForNavigate(point);
//mapContext.setSelectedPointForNavigate(point);
//});
},
infoWindow: InfoWindow.noText));
@ -170,14 +170,18 @@ class _GoogleMapViewState extends State<GoogleMapView> {
var geopoint = mapContext.getSelectedPointForNavigate() as GeoPointDTO?;
if (geopoint != null && _GoogleMapcontroller != null) {
print("COUCOU IL FAUT NAVUGATE");
// TODO Handle zoomDetail
_GoogleMapcontroller!.getZoomLevel().then((actualZoom) {
_GoogleMapcontroller!.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(double.tryParse(geopoint.latitude!)!, double.tryParse(geopoint.longitude!)!),
tilt: 0.0,
bearing: 0.0,
zoom: 16.0
zoom: actualZoom
//zoom: widget.mapDTO.zoom != null ? widget.mapDTO.zoom!.toDouble() : 16
)
));
});
}
return SizedBox();
},

View File

@ -42,7 +42,7 @@ class AnnotationClickListener extends mapBox.OnPointAnnotationClickListener {
try{
var markerToShow = markersList.firstWhere((ml) => "${parse(ml.title!.first.value).documentElement!.text}${ml.latitude}${ml.longitude}" == annotation.textField);
mapContext.setSelectedPoint(markerToShow);
mapContext.setSelectedPointForNavigate(markerToShow);
//mapContext.setSelectedPointForNavigate(markerToShow);
} catch(e) {
print("ISSSUE setSelectedMarker");
print(e);
@ -198,6 +198,7 @@ class _MapBoxViewState extends State<MapBoxView> {
var geoPoint = mapContext.getSelectedPointForNavigate() as GeoPointDTO?;
if (geoPoint != null && mapboxMap != null) {
print("COUCOU IL FAUT NAVUGATE MAPBOX");
// TODO Handle zoomDetail
mapboxMap?.easeTo(
mapBox.CameraOptions(
center: mapBox.Point(coordinates: mapBox.Position(double.tryParse(geoPoint.longitude!)!, double.tryParse(geoPoint.latitude!)!)), //.toJson()

View File

@ -111,7 +111,7 @@ class _MyAppState extends State<MyApp> {
create: (_) => AppContext(widget.tabletAppContext),
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Tablet App Demo',
title: 'MyInfoMate Tablet App',
initialRoute: widget.initialRoute,
/*supportedLocales: [
const Locale('en', 'US'),

View File

@ -17,6 +17,8 @@ import 'dart:io';
import 'package:http/http.dart';
import 'package:intl/intl.dart';
import 'package:meta/meta.dart';
import 'package:http/http.dart' as http;
import 'package:http/io_client.dart';
part 'api_client.dart';
part 'api_helper.dart';

View File

@ -11,21 +11,23 @@
part of openapi.api;
class ApiClient {
ApiClient({this.basePath = 'https://api.myinfomate.be', this.authentication,});
ApiClient({this.basePath = 'https://api.myinfomate.be', this.authentication,}) {
_client = createIOClient();
}
final String basePath;
final Authentication? authentication;
var _client = Client();
late http.Client _client;
final _defaultHeaderMap = <String, String>{};
/// Returns the current HTTP [Client] instance to use in this class.
///
/// The return value is guaranteed to never be null.
Client get client => _client;
http.Client get client => _client;
/// Requests to use a new HTTP [Client] in this class.
set client(Client newClient) {
set client(http.Client newClient) {
_client = newClient;
}
@ -35,6 +37,27 @@ class ApiClient {
_defaultHeaderMap[key] = value;
}
HttpClient createHttpClient() {
SecurityContext context = SecurityContext.defaultContext;
try {
// Assumes that the certificate is in PEM format and located in the assets
context.setTrustedCertificates('/storage/emulated/0/Download/isrgrootx1.pem'); // Hardcoded for MDLF
} on TlsException catch (e) {
print('Error loading certificate: $e');
} on Exception catch (error) {
print('I guess not found, but nevermind for other than MDLF');
}
return HttpClient(context: context);
//..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
}
IOClient createIOClient() {
HttpClient httpClient = createHttpClient();
return IOClient(httpClient);
}
// We don't use a Map<String, String> for queryParams.
// If collectionFormat is 'multi', a key might appear multiple times.
Future<Response> invokeAPI(