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