diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart index b8b67de2c999a95480bb161671082f61656ddf8e..0d01a60e39abe65c611f05183262c4fb91262054 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 ab564cad947fa7d17d2ea5be7687878a04adfe25..7ac397e328372f0bc4d768d3e0765c2b344f531b 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