Add a refresh button! Yeehaw!

This commit is contained in:
Hyperling 2025-04-25 08:20:03 -07:00
parent d8cc22ce80
commit 0f475773de

View File

@ -1,5 +1,6 @@
// Local // Local
import 'package:com_hyperling_buddy_website/secrets.dart'; import '/var/secrets.dart';
import '/var/locals.dart';
// Flutter / Dart // Flutter / Dart
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -26,29 +27,46 @@ class _MainAppState extends State<MainApp> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_callOpenWeather(); _refreshWeather();
} }
@override @override
void dispose() { void dispose() {
weather = loadText;
super.dispose(); super.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget weatherLayout = Column(
children: [Text(weather), CircularProgressIndicator()],
);
if (weather == loadText) { if (weather == loadText) {
Future.delayed(Duration(seconds: 1), () { Future.delayed(Duration(seconds: 1), () {
setState(() { setState(() {
keepLoading = true; keepLoading = true;
}); });
}); });
} else {
weatherLayout = Column(
children: [
TextButton.icon(
label: Text("Reload Weather"),
onPressed: () {
setState(() {
_refreshWeather();
});
},
),
Text(weather),
],
);
} }
return MaterialApp( return MaterialApp(
home: Scaffold( home: Scaffold(
body: Center( body: Center(
child: Column(children: [Text('Hello World!'), Text(weather)]), child: Column(children: [Text('Weather Today!'), weatherLayout]),
), ),
), ),
); );
@ -59,23 +77,23 @@ class _MainAppState extends State<MainApp> {
Future<String> _hitOpenWeather(String zipCode, String? countryCode) async { Future<String> _hitOpenWeather(String zipCode, String? countryCode) async {
countryCode ??= "US"; countryCode ??= "US";
http.Response response = await http.get( String url =
Uri.parse(
'https://api.openweathermap.org/data/2.5/forecast' 'https://api.openweathermap.org/data/2.5/forecast'
'?zip=$zipCode,$countryCode' '?zip=$zipCode,$countryCode'
'&units=imperial' '&units=imperial'
'&appid=$openWeatherKey', '&appid=$openWeatherKey';
),
); if (debug) debugPrint(url);
http.Response response = await http.get(Uri.parse(url));
String data = ""; String data = "";
if (response.statusCode == 200) { if (response.statusCode == 200) {
data = response.body; data = response.body;
var decodedData = jsonDecode(data); var decodedData = jsonDecode(data);
print(decodedData); if (debug) debugPrint(decodedData.toString());
data = decodedData.toString(); data = decodedData.toString();
} else { } else {
print(response.statusCode); debugPrint(response.statusCode.toString());
} }
return data; return data;
@ -84,4 +102,9 @@ class _MainAppState extends State<MainApp> {
_callOpenWeather() async { _callOpenWeather() async {
weather = await _hitOpenWeather("47630", "US"); weather = await _hitOpenWeather("47630", "US");
} }
_refreshWeather() {
weather = loadText;
_callOpenWeather();
}
} }