Newer
Older
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'datamodel.dart';
Future<List<Device>> updateDevices(int collectionId) async {
debugPrint("Start HTTP GET Collection Devices. Collection Id: " + collectionId.toString());
String url = 'https://sensor.awi.de/rest/sensors/collections/getItemsOfCollection/' + collectionId.toString();
// Get Access to local device and current event store.
DeviceStoreInstance availableDevices = DeviceStoreInstance();
EventCurrentInstance currentEvent = EventCurrentInstance();
final response = await http
.get(Uri.parse(url));
if (response.statusCode == 200) {
List<dynamic> data = json.decode(response.body);
for (var entry in data) {
collectionDevices.add(Device.fromJson(entry));
}
debugPrint("Got the following devices: ");
for (var device in collectionDevices){
debugPrint(device.toString());
}
availableDevices.store = collectionDevices;
currentEvent.store.id = collectionDevices[0].id;
currentEvent.store.urn = collectionDevices[0].urn;
return collectionDevices;
} else {
throw Exception('Failed to load Collection');
}
}
Future<List<Collection>> fetchCollections() async {
debugPrint("Fetching Collections...");
List<Collection> collectionList = [];
CollectionStoreInstance collections = CollectionStoreInstance();
final response = await http
.get(Uri.parse('https://sensor.awi.de/rest/sensors/collections/getAllCollections?pointInTime=2018-07-03T12%3A30%3A55.389Z'));
if (response.statusCode == 200) {
return (json.decode(response.body) as List)
.map((i) => Collection.fromJson(i))
.toList();
} else {
debugPrint('Failed to load Collection');
return collectionList;
}
}
class Configuration extends StatefulWidget {
@override
State<Configuration> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<Configuration> {
late Future<Collection> futureCollection;
late Future<List<Collection>> futureCollections;
@override
void initState() {
super.initState();
futureCollections = fetchCollections();
late Future<String> eventTypes;
@override
Widget build(BuildContext context) {
final CollectionStoreInstance collections = CollectionStoreInstance();
final CollectionCurrentInstance activeCollection = CollectionCurrentInstance();
return Scaffold(
appBar: AppBar(
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You must be online to do something here!',
FutureBuilder<List<Collection>>(
future: futureCollections,
builder: (context, snapshot){
if (snapshot.hasData)
{
/*Initialize active collection with first received
collection if not initialized yet*/
if(activeCollection.store.id == -1){
activeCollection.store = collections.store[0];
}
print(activeCollection.store);
print(collections.store);
return DropdownButtonFormField(
value: activeCollection.store.collectionName,
decoration: const InputDecoration(
),
items:
collections.store.map((Collection collection) {
return DropdownMenuItem(
value: collection.collectionName,
child: Text(collection.collectionName),
);
}).toList(),
onChanged: (value) {
activeCollection.store = collections.getCollectionFromName(value.toString());
}
);
}
else{
),
],
),
),
bottomNavigationBar: Row(
FloatingActionButton.extended(
tooltip: 'Select Collection and download corresponding devices',
icon: const Icon(Icons.save),
label: const Text('Select'),
onPressed: () {
updateDevices(activeCollection.store.id);
),
],
),
);
}
}