import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'dart:async'; import 'dart:convert'; class NewWorkoutView extends StatefulWidget{ @override State createState() { return new NewWorkoutViewState(); } } class WorkoutType{ String id, name, description, type, unit; WorkoutType(this.id, this.name, this.description, this.type, this.unit); } class NewWorkoutViewState extends State{ List data; List selectedExercises = new List(); String selectedExercisesString = "Derzeit ausgewählte übungen: "; Future getWorkouts() async { var response = await http.get( "http://10.16.17.65/api/exercises.php?token=satbwertwhbertnwertwertghwertgwertg", headers: { "Accept": "application/json" } ); List results = JsonDecoder().convert(response.body); List templist = []; for(var i = 0; i < results.length; i++){ templist.add(new WorkoutType(results[i]['id'], results[i]['name'], results[i]['description'], results[i]['type'], results[i]['unit'])); } this.setState(() { data = templist; }); print(data); return data; } @override void initState() { // TODO: implement initState getWorkouts(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Erstelle ein neues Workout"), ), body: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsets.all(8), child: TextField( autocorrect: true, decoration: InputDecoration( border: OutlineInputBorder(), labelText: "Name des Workouts" ), ), ), Text(selectedExercisesString), Expanded( child: ListView.builder( itemCount: data == null ? 0 : data.length, itemBuilder: (BuildContext context, int index){ return new ListTile( title: Text(data[index].name), subtitle: Text(data[index].description), onTap: (){ setState(() { if(selectedExercises == null){ selectedExercises = [data[index]]; }else{ selectedExercises.add(data[index]); } }); String temp = "Ausgewählte übungen: "; for (var i = 0; i < selectedExercises.length; i++){ temp = temp + selectedExercises[i].name + ', '; } setState(() { selectedExercisesString = temp; }); }, ); }, ), ) ], ), ); } }