GT TextField
A comprehensive Flutter text field package with MasterTextField (advanced TextField/TextFormField wrapper) and SuggestionTextField with autocomplete and search history.
Features
- π MasterTextField - All TextField/TextFormField properties in one widget
- π SuggestionTextField - Autocomplete with search history
- πΎ Persistent History - Save search history via SharedPreferences
- π« EmojiBlockFormatter - Block emoji input in text fields
- βοΈ Highly Configurable - Every property exposed for customization
- β Validation Support - Auto-switches to TextFormField when validator provided
Installation
Add to your pubspec.yaml:
dependencies:
gt_textfield: ^1.0.0
Then run:
flutter pub get
Quick Start
MasterTextField
import 'package:gt_textfield/gt_textfield.dart';
MasterTextField(
labelText: 'Email',
hintText: 'Enter your email',
prefixIcon: Icons.email,
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value?.isEmpty ?? true) return 'Email is required';
return null;
},
)
MasterTextField with Custom Styling
MasterTextField(
controller: _controller,
labelText: 'Username',
hintText: 'Enter username',
filled: true,
fillColor: Colors.grey[100],
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
prefixIcon: Icons.person,
suffixIconWidget: IconButton(
icon: Icon(Icons.clear),
onPressed: () => _controller.clear(),
),
)
SuggestionTextField with History
SuggestionTextField(
fieldName: 'search_field', // Unique ID for history storage
config: SuggestionFieldConfig(
storageType: HistoryStorageType.persistent,
maxHistoryItems: 10,
showHistoryIcon: true,
),
labelText: 'Search',
hintText: 'Search products...',
onSubmit: (text) => performSearch(text),
onSuggestionSelected: (suggestion) => performSearch(suggestion),
)
SuggestionTextField with Custom Suggestions
SuggestionTextField(
fieldName: 'city_field',
staticSuggestions: ['New York', 'Los Angeles', 'Chicago', 'Houston'],
config: SuggestionFieldConfig(
showDeleteButton: true,
suggestionStyle: TextStyle(fontSize: 16),
),
)
Block Emoji Input
MasterTextField(
labelText: 'Name',
inputFormatters: [EmojiBlockFormatter()],
)
MasterTextField Properties
| Property | Type | Description |
|---|---|---|
controller |
TextEditingController? |
Text controller |
focusNode |
FocusNode? |
Focus node |
labelText |
String? |
Label text |
hintText |
String? |
Hint text |
prefixIcon |
IconData? |
Prefix icon |
suffixIcon |
IconData? |
Suffix icon |
validator |
FormFieldValidator? |
Validation function |
keyboardType |
TextInputType? |
Keyboard type |
obscureText |
bool |
Password field |
maxLines |
int? |
Maximum lines |
inputFormatters |
List<TextInputFormatter>? |
Input formatters |
SuggestionFieldConfig Options
SuggestionFieldConfig(
storageType: HistoryStorageType.persistent,
maxHistoryItems: 10,
minCharsForSuggestion: 1,
showHistoryIcon: true,
showDeleteButton: true,
maxSuggestionsVisible: 5,
suggestionStyle: TextStyle(fontSize: 14),
historyIconColor: Colors.grey,
)
License
MIT License - see LICENSE for details.
Libraries
- emoji_block_formatter
- gt_textfield
- GT TextField - A comprehensive Flutter text field package.
- master_text_field
- suggession_text_field