Skip to main content

searchy 0.1.0 copy "searchy: ^0.1.0" to clipboard
searchy: ^0.1.0 copied to clipboard

A customizable Flutter search widget library providing search bars, fields, and scaffolds with flexible placement and search state management.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:searchy/searchy.dart';

void main() {
  runApp(const SearchyExampleApp());
}

class SearchyExampleApp extends StatelessWidget {
  const SearchyExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Searchy Example',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
        useMaterial3: true,
      ),
      home: const SearchyDemoScreen(),
    );
  }
}

class SearchyDemoScreen extends StatefulWidget {
  const SearchyDemoScreen({super.key});

  @override
  State<SearchyDemoScreen> createState() => _SearchyDemoScreenState();
}

class _SearchyDemoScreenState extends State<SearchyDemoScreen> {
  final List<String> _allItems = [
    'Apple',
    'Banana',
    'Cherry',
    'Date',
    'Elderberry',
    'Fig',
    'Grape',
    'Honeydew',
    'Kiwi',
    'Lemon',
    'Mango',
    'Nectarine',
    'Orange',
    'Papaya',
    'Raspberry',
    'Strawberry',
    'Watermelon',
  ];

  String _searchQuery = '';

  List<String> get _filteredItems {
    if (_searchQuery.isEmpty) return [];
    return _allItems
        .where((item) => item.toLowerCase().contains(_searchQuery.toLowerCase()))
        .toList();
  }

  @override
  Widget build(BuildContext context) {
    return SearchyScaffold(
      bar: SearchyBar(
        placement: SearchyBarPlacement.inline,
        field: SearchyField.filled(
          hintText: 'Search fruits...',
          onChanged: (query) {
            setState(() {
              _searchQuery = query;
            });
          },
        ),
      ),
      showResult: _searchQuery.isNotEmpty,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Icon(Icons.search, size: 64, color: Colors.indigo),
            const SizedBox(height: 16),
            const Text(
              'Type in the search bar above to filter fruits!',
              style: TextStyle(fontSize: 16),
            ),
            const SizedBox(height: 24),
            Text(
              'Total items available: ${_allItems.length}',
              style: const TextStyle(color: Colors.grey),
            ),
          ],
        ),
      ),
      resultBody: _filteredItems.isEmpty
          ? const Center(
        child: Text(
          'No matching fruits found.',
          style: TextStyle(fontSize: 16, color: Colors.grey),
        ),
      )
          : ListView.builder(
        itemCount: _filteredItems.length,
        itemBuilder: (context, index) {
          final fruit = _filteredItems[index];
          return ListTile(
            leading: const Icon(Icons.label_outline),
            title: Text(fruit),
            onTap: () {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('Selected: $fruit')),
              );
            },
          );
        },
      ),
    );
  }
}
0
likes
160
points
484
downloads

Documentation

API reference

Publisher

verified publisheraky.dev

Weekly Downloads

A customizable Flutter search widget library providing search bars, fields, and scaffolds with flexible placement and search state management.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on searchy