Rajdeep100

Untitled

Mar 26th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.14 KB | None | 0 0
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:http/http.dart' as http;
  4. import 'dart:convert';
  5.  
  6.  
  7. void main() => runApp(BlogApp());
  8.  
  9. class BlogApp extends StatefulWidget {
  10.   @override
  11.   _BlogAppState createState() => _BlogAppState();
  12. }
  13.  
  14. class _BlogAppState extends State<BlogApp> {
  15.   var _isLoading = true;
  16.  
  17.   var items;
  18.  
  19.   _fetchData() async {
  20.     print("Attempting to fetch data from network");
  21.     final url =
  22.         "https://www.googleapis.com/blogger/v3/blogs/MY-BLOG-ID/posts?key=API-KEY";
  23.     final response = await http.get(url);
  24.     if (response.statusCode == 200) {
  25.       // print(response.body);
  26.  
  27.       final map = jsonDecode(response.body);
  28.       final itemsJson = map["items"];
  29.  
  30.       //itemsJson.forEach((item) {
  31.       //  print(item['title']);
  32.       //});
  33.  
  34.       setState(() {
  35.         _isLoading = false;
  36.         this.items = itemsJson;
  37.       });
  38.     }
  39.   }
  40.  
  41.   @override
  42.   Widget build(BuildContext context) {
  43.     return MaterialApp(
  44.       home: Scaffold(
  45.         appBar: AppBar(
  46.           title: Text("BlogApp"),
  47.           centerTitle: true,
  48.           actions: <Widget>[
  49.             IconButton(
  50.                 icon: Icon(Icons.refresh),
  51.                 onPressed: () {
  52.                   print("Reloading...");
  53.                   setState(() {
  54.                     _isLoading = true;
  55.                   });
  56.                   _fetchData();
  57.                 })
  58.           ],
  59.         ),
  60.         body: Center(
  61.           child: _isLoading
  62.               ? CircularProgressIndicator()
  63.               : ListView.builder(
  64.                   itemCount: this.items != null ? this.items.length : Container(),
  65.                   itemBuilder: (context, i) {
  66.                     final item = this.items[i];
  67.                     return Column(
  68.                       children: <Widget>[
  69.                         Image.network(item["image"]),
  70.                         Text(item["title"]),
  71.                         Divider()
  72.                       ],
  73.                     );
  74.                     //return Text("Row: $i");
  75.                   }),
  76.         ),
  77.       ),
  78.     );
  79.   }
  80. }
Add Comment
Please, Sign In to add comment