Skip to content
Snippets Groups Projects

Clhp map

Merged Sara Savanovic Djordjevic requested to merge clhp_map into main
64 files
+ 1526
372
Compare changes
  • Side-by-side
  • Inline
Files
64
import 'dart:async';
import 'dart:async';
import 'package:app/server_requests/fetch_relation.dart';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/material.dart';
 
import 'package:app/server_requests/init_state.dart';
 
import 'package:liquid_pull_to_refresh/liquid_pull_to_refresh.dart';
import '../consts.dart';
import '../consts.dart';
import '../data_classes.dart';
import '../widgets/main_layout.dart';
import '../widgets/main_layout.dart';
import '../utils/custom_search_delegate.dart';
import '../utils/custom_search_delegate.dart';
import '../server_requests/fetch_relation.dart';
import '../server_requests/fetch_markers.dart';
class DefaultPage extends StatefulWidget {
class DefaultPage extends StatefulWidget {
const DefaultPage({Key? key}) : super(key: key);
const DefaultPage({Key? key}) : super(key: key);
@@ -20,6 +19,7 @@ class _DefaultPageState extends State<DefaultPage> {
@@ -20,6 +19,7 @@ class _DefaultPageState extends State<DefaultPage> {
late Timer _timer;
late Timer _timer;
bool serverConnection = true;
bool serverConnection = true;
bool dialogShown = false;
bool dialogShown = false;
 
final backgroundColor = Colors.black87;
@override
@override
void dispose() {
void dispose() {
@@ -27,37 +27,17 @@ class _DefaultPageState extends State<DefaultPage> {
@@ -27,37 +27,17 @@ class _DefaultPageState extends State<DefaultPage> {
super.dispose();
super.dispose();
}
}
/// Display message to user
Future<void> _handleRefresh() async {
void showConnectionMessage() {
return await initialiseState(false);
showDialog(
context: context,
builder: (context) => AlertDialog(
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text("Ok"),
)
],
title: const Center(
child: Text("No server connection")
),
contentPadding: const EdgeInsets.all(10.0),
content: const Text(
"The app may display outdated information. Use with caution!",
textAlign: TextAlign.center, // Align text center
),
),
);
}
}
@override
@override
Widget build(BuildContext context) {
Widget build(BuildContext context) {
return MaterialApp(
return MaterialApp(
home: Scaffold(
home: Scaffold(
 
backgroundColor: backgroundColor,
appBar: AppBar(
appBar: AppBar(
backgroundColor: Colors.black87,
backgroundColor: backgroundColor,
leading: IconButton(
leading: IconButton(
icon: const Icon(
icon: const Icon(
Icons.menu,
Icons.menu,
@@ -81,36 +61,38 @@ class _DefaultPageState extends State<DefaultPage> {
@@ -81,36 +61,38 @@ class _DefaultPageState extends State<DefaultPage> {
showSearch( // Fetch new relation and measurements on search
showSearch( // Fetch new relation and measurements on search
context: context,
context: context,
delegate: CustomSearchDelegate((String result) {
delegate: CustomSearchDelegate((String result) {
setState(() async {
// Make request only if the selected lake is different from the current selected lake
selectedRelation = await fetchRelation();
if (result != selectedLake) {
selectedMarkerList = await fetchMeasurements().then((fetchResult) {
setState(() {
List<Measurement> measurements = fetchResult.measurements;
print("SetState called!");
serverConnection = fetchResult.connected;
selectedLake = result;
// Return the measurements
return measurements;
}).catchError((error) {
serverConnection = false;
throw Exception("Failed to fetch measurements: $error");
});
});
selectedLake = result;
initialiseState(false);
});
}
}),
}),
);
);
},
},
),
),
],
],
),
),
body: Container( // Return container with list view and background color
body: LiquidPullToRefresh(
color: const Color(0xff151515),
color: backgroundColor,
child: ListView(
height: 100,
children: [
backgroundColor: Colors.grey[600],
MapContainerWidget(
onRefresh: _handleRefresh,
markerList: selectedMarkerList,
animSpeedFactor: 3,
relation: selectedRelation,
showChildOpacityTransition: false,
serverConnection: serverConnection,
child: Container( // Return main container with map and stats widget
),
color: const Color(0xff151515),
],
child: ListView(
 
children: [
 
MapContainerWidget(
 
measurements: selectedMarkerList,
 
relation: selectedRelation,
 
serverConnection: serverConnection,
 
),
 
],
 
),
),
),
),
),
),
),
Loading