Add a refresh button! Yeehaw!
This commit is contained in:
parent
d8cc22ce80
commit
0f475773de
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user