import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'datamodel.dart'; class AddEvent extends StatelessWidget { 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( value: currentEvent.store.type, decoration: const InputDecoration( labelText: 'Event Type', ), items: eventTypes.store.map((EventType event) { return DropdownMenuItem( value: event.name, child: Text(event.name), ); }).toList(), onChanged: (value) { currentEvent.store.type = value.toString(); } ), DropdownButtonFormField( value: currentEvent.store.urn, decoration: const InputDecoration( labelText: 'URN', ), items: availableDevice.store.map((Device device) { return DropdownMenuItem( value: device.urn, child: Text(device.urn), ); }).toList(), onChanged: (value) { 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' ), ) ]), bottomNavigationBar: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ FloatingActionButton( heroTag: null, onPressed: null, tooltip: 'Get GNSS from device', child: Icon(Icons.my_location), ), SizedBox(width: 50), FloatingActionButton( heroTag: null, onPressed: _storeCurrentEvent, tooltip: 'Add Event', child: Icon(Icons.add), ), SizedBox(width: 20), ], ), ); } }