smartsearch 0.0.1 copy "smartsearch: ^0.0.1" to clipboard
smartsearch: ^0.0.1 copied to clipboard

discontinuedreplaced by: shadcn_flutter

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'),
            ),
          ),
        ),
      ),
    );
  }
}
1
likes
130
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

A smart search box.

Documentation

API reference

License

MIT (license)

Dependencies

ensure_visible_when_focused, flutter, group_list_view

More

Packages that depend on smartsearch