easy_autocomplete

Creator: coderz1093

Last updated:

Add to Cart

Description:

easy autocomplete

Easy Autocomplete #



A Flutter plugin to handle input autocomplete suggestions
Preview #

Table of contents #

ToDo
Done
Installation
Basic example
Example with customized style
Example with asynchronous data fetch
API
Issues & Suggestions

ToDo #

Add validation functionality
Add possibility to show empty message when no suggestion is found

Done #

Add asynchronous suggestions fetch
Add possibility to customize suggestions list item

Installation #
In the pubspec.yaml of your flutter project, add the following dependency:
dependencies:
...
easy_autocomplete: ^1.6.0
copied to clipboard
Basic example #
You can create a simple autocomplete input widget as shown in first preview with the following example:
import 'package:easy_autocomplete/easy_autocomplete.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('Example')
),
body: Container(
padding: EdgeInsets.all(10),
alignment: Alignment.center,
child: EasyAutocomplete(
suggestions: ['Afeganistan', 'Albania', 'Algeria', 'Australia', 'Brazil', 'German', 'Madagascar', 'Mozambique', 'Portugal', 'Zambia'],
onChanged: (value) => print('onChanged value: $value'),
onSubmitted: (value) => print('onSubmitted value: $value')
)
)
)
)
);
}
}
copied to clipboard
Example with customized style #
You can customize other aspects of the autocomplete widget such as the suggestions text style, background color and others as shown in example below:
import 'package:easy_autocomplete/easy_autocomplete.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('Example')
),
body: Container(
padding: EdgeInsets.all(10),
alignment: Alignment.center,
child: EasyAutocomplete(
suggestions: ['Afeganistan', 'Albania', 'Algeria', 'Australia', 'Brazil', 'German', 'Madagascar', 'Mozambique', 'Portugal', 'Zambia'],
cursorColor: Colors.purple,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
borderSide: BorderSide(
color: Colors.purple,
style: BorderStyle.solid
)
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
borderSide: BorderSide(
color: Colors.purple,
style: BorderStyle.solid
)
)
),
suggestionBuilder: (data) {
return Container(
margin: EdgeInsets.all(1),
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.purple,
borderRadius: BorderRadius.circular(5)
),
child: Text(
data,
style: TextStyle(
color: Colors.white
)
)
);
}
onChanged: (value) => print(value)
)
)
)
)
);
}
}
copied to clipboard
The above example will generate something like below preview:

Example with asynchronous data fetch #
To create a autocomplete field that fetches data asynchronously you will need to use asyncSuggestions instead of suggestions
import 'package:easy_autocomplete/easy_autocomplete.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
Future<List<String>> _fetchSuggestions(String searchValue) async {
await Future.delayed(Duration(milliseconds: 750));
List<String> _suggestions = ['Afeganistan', 'Albania', 'Algeria', 'Australia', 'Brazil', 'German', 'Madagascar', 'Mozambique', 'Portugal', 'Zambia'];
List<String> _filteredSuggestions = _suggestions.where((element) {
return element.toLowerCase().contains(searchValue.toLowerCase());
}).toList();
return _filteredSuggestions;
}

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('Example')
),
body: Container(
padding: EdgeInsets.all(10),
alignment: Alignment.center,
child: EasyAutocomplete(
asyncSuggestions: (searchValue) async => _fetchSuggestions(searchValue),
onChanged: (value) => print(value)
)
)
)
)
);
}
}
copied to clipboard
The above example will generate something like below preview:

API #



Attribute
Type
Required
Description
Default value




suggestions
List<String>

The list of suggestions to be displayed



asyncSuggestions
Future<List<String>> Function(String)

Fetches list of suggestions from a Future



controller
TextEditingController

Text editing controller



validator
String Function(String?)

Validate the autocomplete field value



decoration
InputDecoration

Can be used to decorate the input



onChanged
Function(String)

Function that handles the changes to the input



inputFormatter
List<TextInputFormatter>

Can be used to set custom inputFormatters to field



initialValue
String

Can be used to set the textfield initial value



textCapitalization
TextCapitalization

Can be used to set the text capitalization type
TextCapitalization.sentences


autofocus
bool

Determines if should gain focus on screen open
false


focusNode
FocusNode

Can be used to manage TextField focus



keyboardType
TextInputType

Can be used to set different keyboardTypes to your field
TextInputType.text


cursorColor
Color

Can be used to set a custom color to the input cursor
Colors.blue


inputTextStyle
TextStyle

Can be used to set custom style to the suggestions textfield



suggestionTextStyle
TextStyle

Can be used to set custom style to the suggestions list text



suggestionBackgroundColor
Color

Can be used to set custom background color to suggestions list



debounceDuration
Duration

Used to set the debounce time for async data fetch
Duration(milliseconds: 400)


suggestionBuilder
Widget Function(String)

Can be used to customize suggestion items



progressIndicatorBuilder
Widget

Can be used to display custom progress idnicator




Issues & Suggestions #
If you encounter any issue you or want to leave a suggestion you can do it by filling an issue.
Contributions #
Here's the list of our awesome contributors:

Prateek Sunal
Miklos Zsido

Thank you for the support! #

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.