· 3 years ago · Oct 23, 2021, 01:07 AM
1import 'package:flutter/material.dart';
2import 'package:dropdown_search/dropdown_search.dart';
3import 'package:http/http.dart' as http;
4import 'dart:convert';
5
6class Home extends StatefulWidget {
7 const Home({Key? key}) : super(key: key);
8
9 @override
10 _HomeState createState() => _HomeState();
11}
12
13class _HomeState extends State<Home> {
14 final List<String> _cidades = [
15 "Aracaju",
16 "Belém",
17 "Belo Horizonte",
18 "Boa Vista",
19 "Brasilia",
20 "Campo Grande",
21 "Cuiaba",
22 "Curitiba",
23 "Florianópolis",
24 "Fortaleza",
25 "Goiânia",
26 "João Pessoa",
27 "Macapá",
28 "Maceió",
29 "Manaus",
30 "Natal",
31 "Palmas",
32 "Porto Alegre",
33 "Porto Velho",
34 "Recife",
35 "Rio Branco",
36 "Rio de Janeiro",
37 "Salvador",
38 "São Luis",
39 "São Paulo",
40 "Teresina",
41 "Vitória"
42 ];
43
44 String _cidadeSelecionada = "São Paulo";
45
46 carregaClima() async {
47 const String _apiURL = "api.openweathermap.org";
48 const String _path = "/data/2.5/weather";
49 const String _appid = "70490ee3c06c559a659a5d846008bbd3"; //SUA chave de API
50 const String _units = "metric";
51 const String _lang = "pt_br";
52
53 final _parametros = {
54 "q": _cidadeSelecionada,
55 "appid": _appid,
56 "units": _units,
57 "lang": _lang
58 };
59
60 final tempoResponse = await http.get(Uri.https(_apiURL, _path, _parametros));
61
62 print("URL Montada:" + tempoResponse.request!.url.toString());
63
64 //paramos aqui.
65 //o que falta: Verificar se deu ok, pegar o json e mandar para a fábrica de objetos
66 }
67
68 @override
69 Widget build(BuildContext context) {
70 double height = MediaQuery.of(context).size.height;
71 var padding = MediaQuery.of(context).padding;
72
73 return Scaffold(
74 appBar: AppBar(
75 title: Text(_cidadeSelecionada),
76 centerTitle: true,
77 ),
78 body: Center(
79 child: Column(
80 children: [
81 DropdownSearch<String>(
82 mode: Mode.MENU,
83 showSelectedItems: true,
84 items: _cidades,
85 showSearchBox: true,
86 maxHeight: height - padding.top - padding.bottom - 25,
87 onChanged: (value) {
88 setState(() {
89 _cidadeSelecionada = value!;
90 carregaClima();
91 });
92 },
93 ),
94 ],
95 ),
96 ),
97 );
98 }
99}
100