smartsearch 0.0.1
smartsearch: ^0.0.1 copied to clipboard
A smart search box.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:smartsearch/smart_search_result.dart';
import 'package:smartsearch/smartsearch.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en'),
],
home: Scaffold(
body: Builder(builder: (context) =>
Center(
child: TextButton(
onPressed: () => showDialog<void>(
context: context,
builder: (context) => SmartSearchBox(
width: 600,
resultsQuery: (String term, List<String> categories) async {
Map<String, List<String>> testData = {
'Publishers': ['Klay Lewis', 'Ehsan Woodard', 'River Bains', 'Bill Blackbeard', 'Dreadful Pete', 'John Bones', 'Max Henry',],
'Reviewers': ['Toyah Downs', 'Tyla Kane', 'Lillian Bonner', 'Tianna Fernandez', 'Darcie Cervantes', 'Hafsah Pope'],
};
if (categories.isNotEmpty) {
for (String k in testData.keys) {
if (!categories.contains(k)) testData[k] = [];
}
}
if (term.isNotEmpty) {
for (String k in testData.keys) {
testData[k]?.removeWhere((v) => !v.toLowerCase().contains(term.toLowerCase()));
}
}
Map<String, List<SmartSearchResult>> result = {};
for (String k in testData.keys) {
result.putIfAbsent(k, () => []);
for (String v in testData[k] ?? <String>[]) {
result[k]!.add(SmartSearchResult(
titleSlot: Text(v),
descriptionSlot: Text(v, style: TextStyle(color: Theme.of(context).colorScheme.onSurface.withOpacity(0.5)),),
leadingSlot: const Icon(Icons.abc_rounded),
trailingSlot: const Icon(Icons.more_horiz),
onSelect: () async => print(v),
));
}
}
return result;
}
),
),
child: const Text('Search'),
),
),
),
),
);
}
}