From 86cbe63142331353ad631225ca5db9803aaa85ea Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Thu, 4 Apr 2024 12:09:34 +0200
Subject: [PATCH] add: search bar, currently constant

---
 app/lib/widgets/main_layout.dart | 60 +++++++++++++++++++++++++++++---
 app/lib/widgets/search_bar.dart  |  7 ++--
 2 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart
index b8b67de2..0d01a60e 100644
--- a/app/lib/widgets/main_layout.dart
+++ b/app/lib/widgets/main_layout.dart
@@ -1,15 +1,17 @@
 import 'dart:typed_data';
 import 'package:flutter_map/flutter_map.dart';
+import 'package:fuzzy/fuzzy.dart';
 import 'package:flutter/material.dart';
 import 'package:google_fonts/google_fonts.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 
-import 'satellite_layer.dart';
 import 'osm_layer.dart';
+import 'search_bar.dart';
 import 'stat_charts.dart';
 import '../../consts.dart';
 import 'choropleth_map.dart';
 import '../data_classes.dart';
+import 'satellite_layer.dart';
 import 'quick_view_chart.dart';
 
 /// MapContainerWidget is the main widget that contains the map with all
@@ -88,10 +90,9 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
         return Column(
           children: [
             const SizedBox(height: contPadding),
-            /*if (true) {
-              const SearchBar(),
-              const SizedBox(height: contPadding),
-            },*/
+            if (true) // NB temp always true
+              _SearchBar(),
+            const SizedBox(height: contPadding),
             ClipRRect(
               borderRadius: BorderRadius.circular(20),
               child: Stack( // Stack of quick view, map layer, satellite layer, and buttons
@@ -269,4 +270,53 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
       },
     );
   }
+}
+
+
+class _SearchBar extends StatelessWidget {
+  final width = 350.0; // NB pass value to class
+  final List<String> testSearchNames = [
+    "Mjøsa",
+    "Bogstadsvannet",
+    "Einavatnet",
+    "Femsjøen",
+    "Femunden",
+    "Fjellsjøen",
+    "Gjende",
+    "Gjersjøen"
+  ];
+  // Searching function for lake names using Fuzzy library
+  List<String> searchLakeNames(String query) {
+    final options = FuzzyOptions(threshold: 0.3, findAllMatches: true);
+    final matcher = Fuzzy(testSearchNames, options: options);
+    final results = matcher.search(query);
+
+    // Extracting lake names from the results and casting them to strings
+    return results.map((result) => result.item as String).toList();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Padding(
+      padding: const EdgeInsets.symmetric(horizontal: 16.0),
+      child: SizedBox(
+        height: 35, // Adjust the height here
+        width: width,
+        child: TextField(
+          decoration: InputDecoration(
+            contentPadding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0),
+            hintText: 'Search...',
+            filled: true,
+            fillColor: Colors.white,
+            border: OutlineInputBorder(
+              borderRadius: BorderRadius.circular(15.0),
+            ),
+          ),
+          onChanged: (value) {
+            searchLakeNames(value);
+          },
+        ),
+      ),
+    );
+  }
 }
\ No newline at end of file
diff --git a/app/lib/widgets/search_bar.dart b/app/lib/widgets/search_bar.dart
index ab564cad..7ac397e3 100644
--- a/app/lib/widgets/search_bar.dart
+++ b/app/lib/widgets/search_bar.dart
@@ -1,8 +1,9 @@
 import 'package:flutter/material.dart';
 import 'package:fuzzy/fuzzy.dart';
 
-class SearchBar extends StatelessWidget {
-  late List<String> testSearchNames = [
+/*
+class _SearchBar extends StatelessWidget {
+  final List<String> testSearchNames = [
     "Mjøsa",
     "Bogstadsvannet",
     "Einavatnet",
@@ -41,4 +42,4 @@ class SearchBar extends StatelessWidget {
       ),
     );
   }
-}
\ No newline at end of file
+}*/
\ No newline at end of file
-- 
GitLab