Begin a refactor of code to make it more reusable and get it out of main. Going to stop worrying about this for now though and just get the data formatted and presented well, then refactor once it's working correctly.
This commit is contained in:
parent
c2995dac6d
commit
b1d01c6915
45
lib/helpers/http.dart
Normal file
45
lib/helpers/http.dart
Normal file
@ -0,0 +1,45 @@
|
||||
// File for helper functions.
|
||||
|
||||
import '/var/config.dart';
|
||||
import '/var/secrets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'dart:convert';
|
||||
|
||||
// Generic method to hit a GET request and return the response.
|
||||
Future<String> hitAPI(String url) async {
|
||||
if (debug) debugPrint(url);
|
||||
|
||||
http.Response response = await http.get(Uri.parse(url));
|
||||
|
||||
String data = "";
|
||||
if (response.statusCode == 200) {
|
||||
data = response.body;
|
||||
var decodedData = jsonDecode(data);
|
||||
if (debugVerbose) debugPrint(decodedData.toString());
|
||||
data = decodedData.toString();
|
||||
} else {
|
||||
if (debug) debugPrint(response.statusCode.toString());
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
// How to guide: https://openweathermap.org/current#zip
|
||||
Future<String> hitOpenWeatherZip(String zipCode, String? countryCode) async {
|
||||
countryCode ??= "US";
|
||||
|
||||
String url =
|
||||
'$openWeatherAPI'
|
||||
'?zip=$zipCode,$countryCode'
|
||||
'&units=imperial'
|
||||
'&appid=$openWeatherKey';
|
||||
|
||||
String data = await hitAPI(url);
|
||||
return data;
|
||||
}
|
||||
|
||||
// Convert the Future value into a usable value.
|
||||
loadWeather() async {
|
||||
return await hitOpenWeatherZip("47630", "US");
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
// Local
|
||||
import '/var/secrets.dart';
|
||||
import 'var/config.dart';
|
||||
import '/var/config.dart';
|
||||
import 'helpers/http.dart';
|
||||
|
||||
// Flutter / Dart
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'dart:convert';
|
||||
|
||||
void main() {
|
||||
runApp(const MainApp());
|
||||
@ -75,37 +74,7 @@ class _MainAppState extends State<MainApp> {
|
||||
);
|
||||
}
|
||||
|
||||
// How to guide:
|
||||
// https://openweathermap.org/current#zip
|
||||
Future<String> _hitOpenWeather(String zipCode, String? countryCode) async {
|
||||
countryCode ??= "US";
|
||||
|
||||
String url =
|
||||
'https://api.openweathermap.org/data/2.5/forecast'
|
||||
'?zip=$zipCode,$countryCode'
|
||||
'&units=imperial'
|
||||
'&appid=$openWeatherKey';
|
||||
|
||||
if (debug) debugPrint(url);
|
||||
http.Response response = await http.get(Uri.parse(url));
|
||||
|
||||
String data = "";
|
||||
if (response.statusCode == 200) {
|
||||
data = response.body;
|
||||
var decodedData = jsonDecode(data);
|
||||
//if (debug) debugPrint(decodedData.toString());
|
||||
data = decodedData.toString();
|
||||
} else {
|
||||
if (debug) debugPrint(response.statusCode.toString());
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
_callOpenWeather() async {
|
||||
weather = await _hitOpenWeather("47630", "US");
|
||||
}
|
||||
|
||||
// Call the
|
||||
_refreshWeather() {
|
||||
var lastReloadSeconds = DateTime.now().difference(lastLoadTime).inSeconds;
|
||||
if (debug) debugPrint("DEBUG: Refresh was $lastReloadSeconds seconds ago.");
|
||||
@ -118,7 +87,7 @@ class _MainAppState extends State<MainApp> {
|
||||
}
|
||||
|
||||
weather = loadText;
|
||||
_callOpenWeather();
|
||||
weather = loadWeather();
|
||||
lastLoadTime = DateTime.now();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user