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'; ...@@ -2,13 +2,32 @@ import 'package:flutter/material.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'dart:convert'; import 'dart:convert';
import 'dart:async'; import 'dart:async';
import 'dart:io';
const serverURI = "https://127.0.0.1:8443"; const String port = "8443";
const mapEndpoint = serverURI + "/update_map"; const String serverURI = "https://127.0.0.1:$port/";
const fetchInterval = 5; const int fetchInterval = 5;
void main() { Future<void> main() async {
runApp(const App()); // 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 { class App extends StatelessWidget {
...@@ -22,8 +41,9 @@ class App extends StatelessWidget { ...@@ -22,8 +41,9 @@ class App extends StatelessWidget {
} }
} }
// fetchData requests data from the update_map endpoint
Future<void> fetchData() async { Future<void> fetchData() async {
final response = await http.get(Uri.parse(mapEndpoint)); final response = await http.get(Uri.parse(serverURI));
if (response.statusCode == 200) { if (response.statusCode == 200) {
// Parse the JSON response // Parse the JSON response
...@@ -31,6 +51,7 @@ Future<void> fetchData() async { ...@@ -31,6 +51,7 @@ Future<void> fetchData() async {
// NB temporary test print // NB temporary test print
print(data); print(data);
print("Test print, fetchData triggered");
} else { // Handle the error case } else { // Handle the error case
print('Failed to fetch data. Status code: ${response.statusCode}'); print('Failed to fetch data. Status code: ${response.statusCode}');
} }
...@@ -52,7 +73,7 @@ class _DefaultPageState extends State<DefaultPage> { ...@@ -52,7 +73,7 @@ class _DefaultPageState extends State<DefaultPage> {
// Call fetchData when the widget is first created // Call fetchData when the widget is first created
fetchData(); 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); const Duration fiveMinutes = Duration(minutes: fetchInterval);
_timer = Timer.periodic(fiveMinutes, (timer) { _timer = Timer.periodic(fiveMinutes, (timer) {
fetchData(); fetchData();
...@@ -61,7 +82,7 @@ class _DefaultPageState extends State<DefaultPage> { ...@@ -61,7 +82,7 @@ class _DefaultPageState extends State<DefaultPage> {
@override @override
void dispose() { void dispose() {
// Cancel the timer when the widget is disposed to avoid memory leaks // Cancel timer on widget termination
_timer.cancel(); _timer.cancel();
super.dispose(); super.dispose();
} }
...@@ -70,25 +91,17 @@ class _DefaultPageState extends State<DefaultPage> { ...@@ -70,25 +91,17 @@ class _DefaultPageState extends State<DefaultPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Flutter Mobile App'), title: const Text('IceMap'),
), ),
body: Center( body: const Center(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
const Text( Text(
'Default flutter app page!', 'Default page',
style: TextStyle(fontSize: 24), style: TextStyle(fontSize: 24),
), ),
const SizedBox(height: 20), 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'),
),
], ],
), ),
), ),
......
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