Skip to content
Snippets Groups Projects
Commit 335ef96b authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

refactor: move custom search delegate to separate file

parent 6a9b112d
No related branches found
No related tags found
1 merge request!10Clhp map
......@@ -7,6 +7,7 @@ import '../consts.dart';
import 'loading_page.dart';
import '../widgets/main_layout.dart';
import '../data_classes.dart';
import '../utils/custom_search_delegate.dart';
import '../server_requests/fetch_markers.dart';
import '../server_requests/fetch_relation.dart';
......@@ -113,7 +114,7 @@ class _DefaultPageState extends State<DefaultPage> {
onPressed: () {
showSearch(
context: context,
delegate: _CustomSearchDelegate((String result) {
delegate: CustomSearchDelegate((String result) {
setState(() {
selectedLake = result;
});
......@@ -146,89 +147,4 @@ class _DefaultPageState extends State<DefaultPage> {
),
);
}
}
typedef SearchResultCallback = void Function(String result);
class _CustomSearchDelegate extends SearchDelegate {
final SearchResultCallback onResultSelected;
_CustomSearchDelegate(this.onResultSelected);
List<String> searchItems = [ // NB temp values
"Mjøsa",
"Bogstadsvannet",
"Einavatnet",
"Femsjøen",
"Femunden",
"Fjellsjøen",
"Gjende",
"Gjersjøen"
];
@override
List<Widget> buildActions(BuildContext context) {
return [
IconButton( // Clear query
icon: const Icon(Icons.clear),
onPressed: () {
query = '';
},
)
];
}
@override
Widget buildLeading(BuildContext context) {
return IconButton( // Close search bar
icon: const Icon(Icons.arrow_back),
onPressed: () {
close(context, null);
},
);
}
@override
Widget buildResults(BuildContext context) {
List<String> searchResults = [];
final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
final matcher = Fuzzy(searchItems, options: options);
final results = matcher.search(query);
searchResults = results.map((result) => result.item as String).toList();
return ListView.builder(
itemCount: searchResults.length,
itemBuilder: (context, index) {
var result = searchResults[index];
return GestureDetector(
onTap: () {
onResultSelected(result);
close(context, result);
},
child: ListTile(
title: Text(result),
),
);
},
);
}
@override
Widget buildSuggestions(BuildContext context) {
List<String> searchResults = [];
final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
final matcher = Fuzzy(searchItems, options: options);
final results = matcher.search(query);
searchResults = results.map((result) => result.item as String).toList();
return ListView.builder(
itemCount: searchResults.length,
itemBuilder: (context, index) {
var result = searchResults[index];
return ListTile(
title: Text(result),
);
},
);
}
}
\ No newline at end of file
import 'package:fuzzy/fuzzy.dart';
import 'package:flutter/material.dart';
typedef SearchResultCallback = void Function(String result);
class CustomSearchDelegate extends SearchDelegate {
final SearchResultCallback onResultSelected;
CustomSearchDelegate(this.onResultSelected);
List<String> searchItems = [ // NB temp values
"Mjøsa",
"Bogstadsvannet",
"Einavatnet",
"Femsjøen",
"Femunden",
"Fjellsjøen",
"Gjende",
"Gjersjøen"
];
@override
List<Widget> buildActions(BuildContext context) {
return [
IconButton( // Clear query
icon: const Icon(Icons.clear),
onPressed: () {
query = '';
},
)
];
}
@override
Widget buildLeading(BuildContext context) {
return IconButton( // Close search bar
icon: const Icon(Icons.arrow_back),
onPressed: () {
close(context, null);
},
);
}
@override
Widget buildResults(BuildContext context) {
List<String> searchResults = [];
final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
final matcher = Fuzzy(searchItems, options: options);
final results = matcher.search(query);
searchResults = results.map((result) => result.item as String).toList();
return ListView.builder(
itemCount: searchResults.length,
itemBuilder: (context, index) {
var result = searchResults[index];
return GestureDetector(
onTap: () {
onResultSelected(result);
close(context, result);
},
child: ListTile(
title: Text(result),
),
);
},
);
}
@override
Widget buildSuggestions(BuildContext context) {
List<String> searchResults = [];
final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
final matcher = Fuzzy(searchItems, options: options);
final results = matcher.search(query);
searchResults = results.map((result) => result.item as String).toList();
return ListView.builder(
itemCount: searchResults.length,
itemBuilder: (context, index) {
var result = searchResults[index];
return ListTile(
title: Text(result),
);
},
);
}
}
\ No newline at end of file
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