From a7d5d3021ad2672bcf741276ea5718d2f700a297 Mon Sep 17 00:00:00 2001 From: Maximilian Betz <Maximilian.Betz@awi.de> Date: Fri, 11 Feb 2022 15:56:50 +0100 Subject: [PATCH] add precision field --- lib/addevent.dart | 49 ++++++++++++++++++++++++++++++++++------------ lib/datamodel.dart | 44 +++++++++++++++++++++++++++++------------ 2 files changed, 67 insertions(+), 26 deletions(-) diff --git a/lib/addevent.dart b/lib/addevent.dart index e6f084b..7aa1958 100644 --- a/lib/addevent.dart +++ b/lib/addevent.dart @@ -10,7 +10,7 @@ class AddEvent extends StatefulWidget { } class _AddEventPageState extends State<AddEvent> { - final List<bool> _isSelected = [true]; + final List<bool> _isGNSSSelected = [true]; bool servicestatus = false; bool haspermission = false; late LocationPermission permission; @@ -18,7 +18,7 @@ class _AddEventPageState extends State<AddEvent> { late String long = ""; late String lat = ""; late String alt = ""; - late String accuracy = ""; + late double accuracy = 0.0; late StreamSubscription<Position> positionStream; LocationSettings locationSettings = const LocationSettings( accuracy: LocationAccuracy.high, @@ -35,7 +35,7 @@ class _AddEventPageState extends State<AddEvent> { long = position.longitude.toString(); lat = position.latitude.toString(); alt = position.altitude.toString(); - accuracy = position.accuracy.toString(); + accuracy = position.accuracy; setState(() { //refresh UI @@ -49,7 +49,7 @@ class _AddEventPageState extends State<AddEvent> { long = position.longitude.toString(); lat = position.latitude.toString(); alt = position.altitude.toString(); - accuracy = position.accuracy.toString(); + accuracy = position.accuracy; setState(() { //refresh UI on update @@ -125,9 +125,32 @@ class _AddEventPageState extends State<AddEvent> { final EventStoreInstance storedEvents = EventStoreInstance(); final EventCurrentInstance currentEvent = EventCurrentInstance(); - final TextEditingController _controllerLat = TextEditingController(text: lat); - final TextEditingController _controllerLong = TextEditingController(text: long); - final TextEditingController _controllerAlt = TextEditingController(text: alt); + final bool _disable_gnss_editing = _isGNSSSelected[0]; + String _gnss_status_text = ""; + + //print("###"+currentEvent.store.toString()); + + //final TextEditingController _controllerLat = TextEditingController(text: currentEvent.store.latitude); + final TextEditingController _controllerLat = TextEditingController(text: "LAT123"); + //final TextEditingController _controllerLong = TextEditingController(text: currentEvent.store.longitude); + final TextEditingController _controllerLong = TextEditingController(text: "Long123"); + //final TextEditingController _controllerAlt = TextEditingController(text: currentEvent.store.elevation); + final TextEditingController _controllerAlt = TextEditingController(text: "Alt123"); + + //currentEvent.store. + if (true == _isGNSSSelected[0]){ + _controllerLat.text = lat; + _controllerLong.text = long; + _controllerAlt.text = alt; + + _gnss_status_text = "Precision: "+ accuracy.toStringAsFixed(2) +"m"; + } + else{ + _gnss_status_text = "Off"; + // do nothing and keep old value, + } + + return Scaffold( appBar: AppBar(title: const Text("Add Event")), @@ -188,7 +211,7 @@ class _AddEventPageState extends State<AddEvent> { ), TextField( readOnly: true, - enabled: true, + enabled: !_disable_gnss_editing, controller: _controllerLat, decoration: InputDecoration( labelText: 'Latitude', @@ -197,7 +220,7 @@ class _AddEventPageState extends State<AddEvent> { ), TextField( readOnly: true, - enabled: true, + enabled: !_disable_gnss_editing, controller: _controllerLong, decoration: InputDecoration( labelText: 'Longitude', @@ -206,7 +229,7 @@ class _AddEventPageState extends State<AddEvent> { ), TextField( readOnly: true, - enabled: true, + enabled: !_disable_gnss_editing, controller: _controllerAlt, decoration: InputDecoration( labelText: 'Elevation', @@ -217,16 +240,16 @@ class _AddEventPageState extends State<AddEvent> { bottomNavigationBar: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - Text('No-Fix'), + Text(_gnss_status_text), SizedBox(width: 50), ToggleButtons( children: <Widget>[ Icon(Icons.my_location), ], - isSelected: _isSelected, + isSelected: _isGNSSSelected, onPressed: (int index) { setState(() { - _isSelected[index] = !_isSelected[index]; + _isGNSSSelected[index] = !_isGNSSSelected[index]; }); }, ), diff --git a/lib/datamodel.dart b/lib/datamodel.dart index 3d972fc..a81d489 100644 --- a/lib/datamodel.dart +++ b/lib/datamodel.dart @@ -50,28 +50,46 @@ class Event{ String type; String description; String status; + String latitude; + String longitude; + String elevation; Event( - this.id, - this.urn, - this.label, - this.type, - this.description, - this.status - ); + this.id, + this.urn, + this.label, + this.type, + this.description, + this.status, + [this.latitude = "", + this.longitude = "", + this.elevation = ""] + ); factory Event.fromJson(Map<String, dynamic> parsedJson){ return Event( parsedJson['id'] as int, - parsedJson['urn'] as String, - parsedJson['label'] as String, - parsedJson['type'] as String, - parsedJson['description'] as String, - parsedJson['status'] as String ); + parsedJson['urn'] as String, + parsedJson['label'] as String, + parsedJson['type'] as String, + parsedJson['description'] as String, + parsedJson['status'] as String, + "", + "", + "", + ); } @override String toString(){ - return '{ ${this.id}, ${this.urn}, ${this.label}, ${this.type}, ${this.description}, ${this.status} }'; + return '{ ${this.id}, ' + '${this.urn}, ' + '${this.label}, ' + '${this.type}, ' + '${this.description}, ' + '${this.latitude},' + '${this.longitude},' + '${this.elevation},' + '${this.status} }'; } } -- GitLab