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