Skip to content
Snippets Groups Projects
configuration.dart 4.67 KiB
Newer Older
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';


Future<Collection> fetchCollection() async {
  print("Start HTTP GET++##");

  final response = await http
      .get(Uri.parse('https://sensor.awi.de/rest/sensors/collections/getCollection/22'));

  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,
    // then parse the JSON.
    return Collection.fromJson(jsonDecode(response.body));
  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to load Collection');
  }
}
Future<List<Collection>> fetchCollections() async {
  print("Fetching Collections...");

  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) {
    List<Collection> collectionList;
    return (json.decode(response.body) as List)
        .map((i) => Collection.fromJson(i))
        .toList();

  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to load Collection');
  }
}


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();
    futureCollection = fetchCollection();
    futureCollections = fetchCollections();
  late Future<String> eventTypes;


  @override
  Widget build(BuildContext context) {
    final CollectionStoreInstance storedCollections = CollectionStoreInstance();
    final CollectionCurrentInstance currentCollection = CollectionCurrentInstance();

    return Scaffold(
      appBar: AppBar(
        title: Text('Configuration'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            FutureBuilder<List<Collection>>(
                future: futureCollections,
                builder: (context, snapshot){
                  if (snapshot.hasData)
                  {
                    print(snapshot.data);

                    print(futureCollections);
                    //storedCollections.store = snapshot.data!;  // Store data locally
                    //var listlen = storedCollections.store.length();
                    //print('Length ###: ' + storedCollections.store.length().toString());

                    return DropdownButtonFormField(
                        value: currentCollection.store.collectionName,
                        decoration: const InputDecoration(
                          labelText: 'Chosen Collection',
                        ),
                        items:
                        storedCollections.store.map((Collection collection) {
                          return DropdownMenuItem(
                            value: collection.collectionName,
                            child: Text(collection.collectionName),
                          );
                        }).toList(),
                        onChanged: (value) {
                          currentCollection.store.collectionName = value.toString();
                        }
                    );
                  }
                  else{
                    return CircularProgressIndicator();
                  }
                }
            FutureBuilder<Collection>(
                future: futureCollection,
                builder: (context, snapshot){
                  if (snapshot.hasData)
                  {
                    return Text(snapshot.data!.collectionName);
                  }
                  else{
                    return CircularProgressIndicator();
                  }
          ],
        ),
      ),
      bottomNavigationBar: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          FloatingActionButton.extended(
            tooltip: 'Request Collections from sensor.awi.de',
            icon: Icon(Icons.download),
            label: const Text("Get Collections"),
            onPressed: null,
          FloatingActionButton.extended(
            tooltip: 'Select Collection and download corresponding devices',
            icon: Icon(Icons.save),
            label: const Text('Select'),
            onPressed: null,