Newer
Older
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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();
}
}
),
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
],
),
),
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'),
),
],
),
);
}
}