Skip to content
Snippets Groups Projects
Commit 4238877c authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: app-server connection

parent 9d871fbf
No related branches found
No related tags found
No related merge requests found
......@@ -2,13 +2,32 @@ import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'dart:async';
import 'dart:io';
const serverURI = "https://127.0.0.1:8443";
const mapEndpoint = serverURI + "/update_map";
const fetchInterval = 5;
const String port = "8443";
const String serverURI = "https://127.0.0.1:$port/";
const int fetchInterval = 5;
void main() {
runApp(const App());
Future<void> main() async {
// NB temporary test print
print(serverURI);
try {
// Create a custom HTTP client with disabled SSL certificate validation
HttpClient client = HttpClient()
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
// Use the custom HTTP client for requests
var request = await client.getUrl(Uri.parse(serverURI));
var response = await request.close();
// Handle response
print('Response status: ${response.statusCode}');
} catch (e) {
// Handle connection error
print('Failed to connect to the server: $e');
}
}
class App extends StatelessWidget {
......@@ -22,8 +41,9 @@ class App extends StatelessWidget {
}
}
// fetchData requests data from the update_map endpoint
Future<void> fetchData() async {
final response = await http.get(Uri.parse(mapEndpoint));
final response = await http.get(Uri.parse(serverURI));
if (response.statusCode == 200) {
// Parse the JSON response
......@@ -31,6 +51,7 @@ Future<void> fetchData() async {
// NB temporary test print
print(data);
print("Test print, fetchData triggered");
} else { // Handle the error case
print('Failed to fetch data. Status code: ${response.statusCode}');
}
......@@ -52,7 +73,7 @@ class _DefaultPageState extends State<DefaultPage> {
// Call fetchData when the widget is first created
fetchData();
// Schedule fetchData to run periodically based on FETCH_INTERVAL const
// Schedule fetchData to run periodically based on fetchInterval const
const Duration fiveMinutes = Duration(minutes: fetchInterval);
_timer = Timer.periodic(fiveMinutes, (timer) {
fetchData();
......@@ -61,7 +82,7 @@ class _DefaultPageState extends State<DefaultPage> {
@override
void dispose() {
// Cancel the timer when the widget is disposed to avoid memory leaks
// Cancel timer on widget termination
_timer.cancel();
super.dispose();
}
......@@ -70,25 +91,17 @@ class _DefaultPageState extends State<DefaultPage> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Flutter Mobile App'),
title: const Text('IceMap'),
),
body: Center(
body: const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Default flutter app page!',
Text(
'Default page',
style: TextStyle(fontSize: 24),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 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'),
),
SizedBox(height: 20),
],
),
),
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment