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

class Collection {
  final int id;
  final String description;
  final String collectionName;

  const Collection({
    required this.id,
    required this.description,
    required this.collectionName,
  });

  factory Collection.fromJson(Map<String, dynamic> json) {
    return Collection(
      id: json['id'],
      collectionName: json['collectionName'],
      description: json['description'],
    );
  }
}

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');
  }
}


class Configuration extends StatefulWidget {
  @override
  State<Configuration> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<Configuration> {
  int _counter = 0;
  int _factor = 1;

  String selectedValue = '1';
  var available_items = [
    '1',
    '10',
    '100',
  ];


  late Future<Collection> futureCollection;

  @override
  void initState() {
    super.initState();
    futureCollection = fetchCollection();
  late Future<String> eventTypes;


  void _incrementCounter() {
    setState(() {
      _counter = _counter + _factor;
    });
  }

  void _decrementCounter() {
    setState(() {
      _counter = _counter - _factor;
    });
  }

  void _resetCounter() {
    setState(() {
      _counter = 0;
    });
  }

  void _getCollections() {
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Configuration'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline2,
            ),
            DropdownButton(
              value: selectedValue,
              icon: const Icon(Icons.keyboard_arrow_down),
              items: available_items.map((String available_items) {
                return DropdownMenuItem(
                  value: available_items,
                  child: Text(available_items),
                );
              }).toList(),
              onChanged: (String? newValue) {
                setState(() {
                  selectedValue = newValue!;
                  _factor = int.parse(selectedValue);
                });
              },
            ),
            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(
            heroTag: null,
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _decrementCounter,
            tooltip: 'Decrement',
            child: const Text('-'),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _resetCounter,
            tooltip: 'Reset to 0',
            child: const Icon(Icons.delete),
          ),
          FloatingActionButton(
            heroTag: null,
            onPressed: _getCollections,
            tooltip: 'Reset to 0',
            child: const Text('Update'),
          ),
        ],
      ),
    );
  }
}