smart_auto_suggest_box 0.13.0 copy "smart_auto_suggest_box: ^0.13.0" to clipboard
smart_auto_suggest_box: ^0.13.0 copied to clipboard

A highly customizable auto-suggest text field with smart dropdown positioning that adapts to available screen space.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:smart_auto_suggest_box/smart_auto_suggest_box.dart';

import 'usecases/async_search_usecase.dart';
import 'usecases/bottom_sheet_usecase.dart';
import 'usecases/box_overlay_usecase.dart';
import 'usecases/custom_item_builder_usecase.dart';
import 'usecases/custom_no_results_usecase.dart';
import 'usecases/dropdown_direction_usecase.dart';
import 'usecases/error_on_search_usecase.dart';
import 'usecases/form_validation_usecase.dart';
import 'usecases/multi_select_basic_usecase.dart';
import 'usecases/multi_select_max_usecase.dart';
import 'usecases/search_mode_always_usecase.dart';
import 'usecases/selected_item_display_usecase.dart';
import 'usecases/view_inline_usecase.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Smart Auto Suggest Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
        extensions: [SmartAutoSuggestTheme.light()],
      ),
      darkTheme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
          seedColor: Colors.deepPurple,
          brightness: Brightness.dark,
        ),
        useMaterial3: true,
        extensions: [SmartAutoSuggestTheme.dark()],
      ),
      localizationsDelegates: const [
        SmartAutoSuggestBoxLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales:
          SmartAutoSuggestBoxLocalizations.delegate.supportedLocales,
      home: const _DemoHome(),
    );
  }
}

class _DemoHome extends StatelessWidget {
  const _DemoHome();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Smart Auto Suggest Use Cases')),
      body: ListView(
        children: [
          _buildListItem(
            context,
            'Floating Overlay',
            'Basic SmartAutoSuggestBox usecase',
            const BoxOverlayUseCase(),
          ),
          _buildListItem(
            context,
            'Inline View',
            'Basic SmartAutoSuggestView usecase',
            const ViewInlineUseCase(),
          ),
          _buildListItem(
            context,
            'Async Server Search',
            'Searching with a network delay',
            const AsyncSearchUseCase(),
          ),
          _buildListItem(
            context,
            'Search Mode: always',
            'Trigger search on every keystroke',
            const SearchModeAlwaysUseCase(),
          ),
          _buildListItem(
            context,
            'onSearch Error',
            'Error handling when onSearch fails',
            const ErrorOnSearchUseCase(),
          ),
          _buildListItem(
            context,
            'Dropdown Direction',
            'Test top, bottom, start, end directions',
            const DropdownDirectionUseCase(),
          ),
          _buildListItem(
            context,
            'BottomSheet View',
            'SmartAutoSuggestView inside a BottomSheet',
            const BottomSheetUseCase(),
          ),
          _buildListItem(
            context,
            'Custom No-Results',
            'Custom UI when no results are found',
            const CustomNoResultsUseCase(),
          ),
          _buildListItem(
            context,
            'Custom Item Builder',
            'Custom layout for suggestion items',
            const CustomItemBuilderUseCase(),
          ),
          _buildListItem(
            context,
            'Form Validation',
            'Usage inside a Form with error text',
            const FormValidationUseCase(),
          ),
          _buildListItem(
            context,
            'Selected Item Builder',
            'Custom layout for the selected item in the text field',
            const SelectedItemDisplayUseCase(),
          ),
          _buildListItem(
            context,
            'Basic Multi-Select',
            'SmartAutoSuggestMultiSelectBox basic demo',
            const MultiSelectBasicUseCase(),
          ),
          _buildListItem(
            context,
            'Max Selections Multi-Select',
            'Multi-Select with max limits',
            const MultiSelectMaxUseCase(),
          ),
        ],
      ),
    );
  }

  Widget _buildListItem(
    BuildContext context,
    String title,
    String subtitle,
    Widget child,
  ) {
    return ListTile(
      title: Text(title),
      subtitle: Text(subtitle),
      trailing: const Icon(Icons.chevron_right),
      onTap: () {
        Navigator.of(
          context,
        ).push(MaterialPageRoute(builder: (context) => child));
      },
    );
  }
}
1
likes
0
points
808
downloads

Publisher

unverified uploader

Weekly Downloads

A highly customizable auto-suggest text field with smart dropdown positioning that adapts to available screen space.

License

unknown (license)

Dependencies

flutter, gap, intl

More

Packages that depend on smart_auto_suggest_box