Advertisement
Guest User

Untitled

a guest
May 2nd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.05 KB | None | 0 0
  1. import 'dart:async';
  2. import 'dart:convert';
  3.  
  4. import 'package:flutter/material.dart';
  5. import 'package:http/http.dart' as http;
  6.  
  7. void main() => runApp(new MyApp());
  8.  
  9. class MyApp extends StatelessWidget {
  10.   @override
  11.   Widget build(BuildContext context) {
  12.     return new MaterialApp(
  13.       title: 'Flutter Demo',
  14.       theme: new ThemeData(
  15.         primarySwatch: Colors.blue,
  16.       ),
  17.       home: new MyHomePage(title: 'Flutter Demo Home Page'),
  18.     );
  19.   }
  20. }
  21.  
  22. class MyHomePage extends StatefulWidget {
  23.   MyHomePage({Key key, this.title}) : super(key: key);
  24.  
  25.   final String title;
  26.  
  27.   @override
  28.   _MyHomePageState createState() => new _MyHomePageState();
  29. }
  30.  
  31. class _MyHomePageState extends State<MyHomePage> {
  32.   Widget image;
  33.  
  34.   Future<String> getImageUrlFromSite() async {
  35.     http.Response res = await http.get(
  36.         "https://api.unsplash.com/photos/random?client_id=1bf67fa81b7d834ac542c7d80ba7f724858d870515e63bf8df91eae3cb022a97");
  37.     String jsonString = res.body;
  38.     dynamic jsonStruct = json.decode(jsonString);
  39.     if (jsonStruct is Map) {
  40.       Map<String, dynamic> data = jsonStruct;
  41.       if (data.containsKey("urls") && data["urls"].containsKey("regular")) return data["urls"]["regular"];
  42.     }
  43.     return null;
  44.   }
  45.  
  46.   void reMakeCounter() async {
  47.     getImageUrlFromSite().then((String urlFromSite) {
  48.       setState(() {
  49.         image = new Image.network(urlFromSite);
  50.       });
  51.     });
  52.   }
  53.  
  54.   @override
  55.   void initState() {
  56.     super.initState();
  57.  
  58.     reMakeCounter();
  59.   }
  60.  
  61.   @override
  62.   Widget build(BuildContext context) {
  63.     Column imageColumn = new Column(
  64.       mainAxisAlignment: MainAxisAlignment.center,
  65.       children: <Widget>[
  66.         new Text(
  67.           'Awaiting for image...',
  68.         ),
  69.       ],
  70.     );
  71.     if (image != null) {
  72.       imageColumn.children.removeLast();
  73.       imageColumn.children.add(image);
  74.     }
  75.     return new Scaffold(
  76.       appBar: new AppBar(
  77.         title: new Text(widget.title),
  78.       ),
  79.       body: new Center(
  80.         child: imageColumn,
  81.       ),
  82.     );
  83.   }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement