diff --git a/app/lib/main.dart b/app/lib/main.dart index 74415606f3c004a5558d4192a3f8af238a0d255c..e2e024ffd4d626b0b70e9307b048ce37d75ec39e 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,7 +1,11 @@ import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; +import 'dart:convert'; +import 'dart:async'; -const SERVER_URI = "https://127.0.0.1:8443"; +const serverURI = "https://127.0.0.1:8443"; +const mapEndpoint = serverURI + "/update_map"; +const fetchInterval = 5; void main() { runApp(const App()); @@ -18,9 +22,49 @@ class App extends StatelessWidget { } } -// Default page -class DefaultPage extends StatelessWidget { - const DefaultPage({super.key}); +Future<void> fetchData() async { + final response = await http.get(Uri.parse(mapEndpoint)); + + if (response.statusCode == 200) { + // Parse the JSON response + Map<String, dynamic> data = jsonDecode(response.body); + + // NB temporary test print + print(data); + } else { // Handle the error case + print('Failed to fetch data. Status code: ${response.statusCode}'); + } +} + +class DefaultPage extends StatefulWidget { + const DefaultPage({Key? key}) : super(key: key); + + @override + _DefaultPageState createState() => _DefaultPageState(); +} + +class _DefaultPageState extends State<DefaultPage> { + late Timer _timer; + + @override + void initState() { + super.initState(); + // Call fetchData when the widget is first created + fetchData(); + + // Schedule fetchData to run periodically based on FETCH_INTERVAL const + const Duration fiveMinutes = Duration(minutes: fetchInterval); + _timer = Timer.periodic(fiveMinutes, (timer) { + fetchData(); + }); + } + + @override + void dispose() { + // Cancel the timer when the widget is disposed to avoid memory leaks + _timer.cancel(); + super.dispose(); + } @override Widget build(BuildContext context) { @@ -39,9 +83,8 @@ class DefaultPage extends StatelessWidget { const SizedBox(height: 20), ElevatedButton( onPressed: () async { - // Attempt to connect to server - var response = await http.get(Uri.parse(SERVER_URI)); - + // Attempt to connect to the server + var response = await http.get(Uri.parse(serverURI)); print('Response from server: ${response.body}'); }, child: const Text('Some text'),