import 'package:flutter/material.dart'; import 'dart:async'; import 'package:http/http.dart' as http; import 'dart:convert'; void main() { runApp(new MaterialApp( home: new MyGetHttpData(), )); } // Create a stateful widget class MyGetHttpData extends StatefulWidget { @override MyGetHttpDataState createState() => new MyGetHttpDataState(); } // Create the state for our stateful widget class MyGetHttpDataState extends State { final String url = "https://swapi.co/api/people"; List data; // Function to get the JSON data Future getJSONData() async { var response = await http.get( // Encode the url Uri.encodeFull(url), // Only accept JSON response headers: {"Accept": "application/json"}); // Logs the response body to the console print(response.body); // To modify the state of the app, use this method setState(() { // Get the JSON data var dataConvertedToJSON = JSON.decode(response.body); // Extract the required part and assign it to the global variable named data data = dataConvertedToJSON['results']; }); return "Successfull"; } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text("Retrieve JSON Data via HTTP GET"), ), // Create a Listview and load the data when available body: new ListView.builder( itemCount: data == null ? 0 : data.length, itemBuilder: (BuildContext context, int index) { return new Container( child: new Center( child: new Column( // Stretch the cards in horizontal axis crossAxisAlignment: CrossAxisAlignment.stretch, children: [ new Card( child: new Container( child: new Text( // Read the name field value and set it in the Text widget data[index]['name'], // set some style to text style: new TextStyle( fontSize: 20.0, color: Colors.lightBlueAccent), ), // added padding padding: const EdgeInsets.all(15.0), ), ) ], )), ); }), ); } @override void initState() { super.initState(); // Call the getJSONData() method when the app initializes this.getJSONData(); } }