Newer
Older
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'datamodel.dart';
import 'dart:async';
import 'package:geolocator/geolocator.dart';
Future<Position> fetchPosition() async {
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print(position.longitude); //Output: 80.24599079
print(position.latitude); //Output: 29.6593457
print(position.altitude);
String long = position.longitude.toString();
String lat = position.latitude.toString();
String alt = position.altitude.toString();
return position;
}
class AddEvent extends StatefulWidget {
@override
State<AddEvent> createState() => _AddEventPageState();
}
class _AddEventPageState extends State<AddEvent> {
final List<bool> _isSelected = [true];
@override
void initState() {
super.initState();
}
void _storeCurrentEvent() {
final EventStoreInstance storedEvents = EventStoreInstance();
final EventCurrentInstance currentEvent = EventCurrentInstance();
storedEvents.store.add(
Event(
currentEvent.store.id,
currentEvent.store.urn,
currentEvent.store.label,
currentEvent.store.type,
currentEvent.store.description,
currentEvent.store.status,
));
}
//TODO: add field validators for freetext fields. Check allowed characters in sensor.awi.de
//TODO: (Description, Label, Latitude, Longitude, Elevation, )
@override
Widget build(BuildContext context) {
/* Get singletons to access relevant data here.*/
final EventTypeStoreInstance eventTypes = EventTypeStoreInstance();
final DeviceStoreInstance availableDevice = DeviceStoreInstance();
final EventStoreInstance storedEvents = EventStoreInstance();
final EventCurrentInstance currentEvent = EventCurrentInstance();
return Scaffold(
appBar: AppBar(title: const Text("Add Event")),
body:
Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
TextFormField(
initialValue: currentEvent.store.label,
decoration: const InputDecoration(
labelText: 'Label'
),
onChanged: (value) {
currentEvent.store.label = value;
},
),
DropdownButtonFormField(
decoration: const InputDecoration(
labelText: 'Event Type',
),
eventTypes.store.map((EventType event) {
return DropdownMenuItem(
value: event.name,
child: Text(event.name),
);
}).toList(),
currentEvent.store.type = value.toString();
}
),
DropdownButtonFormField(
decoration: const InputDecoration(
labelText: 'URN',
),
items:
availableDevice.store.map((Device device) {
return DropdownMenuItem(
value: device.urn,
child: Text(device.urn),
);
}).toList(),
currentEvent.store.urn = value.toString();
currentEvent.store.id = availableDevice.getDeviceIdFromUrn(value.toString());
}
),
TextFormField(
initialValue: currentEvent.store.description,
decoration: const InputDecoration(
labelText: 'Description'
),
onChanged: (value) {
currentEvent.store.description = value;
},
),
TextFormField(
decoration: const InputDecoration(
labelText: 'Latitude'
),
),
TextFormField(
decoration: const InputDecoration(
labelText: 'Longitude'
),
),
TextFormField(
decoration: const InputDecoration(
labelText: 'Elevation'
),
),
FutureBuilder<Position>(
future: fetchPosition(),
builder: (context, snapshot){
if (snapshot.hasData)
{
return Text(snapshot.data!.latitude.toString());
}
else{
return CircularProgressIndicator();
}
}
),
]),
bottomNavigationBar: Row(
mainAxisAlignment: MainAxisAlignment.end,
ToggleButtons(
children: <Widget>[
Icon(Icons.my_location),
],
isSelected: _isSelected,
onPressed: (int index) {
setState(() {
_isSelected[index] = !_isSelected[index];
});
},
SizedBox(width: 50),
FloatingActionButton(
heroTag: null,