Reputation: 95
I have a lot of Text Editing Controller and instead of repeating it and writing it again and again, is there a way to create a list and assign it to a controller?
TextEditingController _Length = TextEditingController();
TextEditingController _Width = TextEditingController();
TextEditingController _LengthInch = TextEditingController();
TextEditingController _WidthInch = TextEditingController();
TextEditingController _LengthFt = TextEditingController();
TextEditingController _WidthFt = TextEditingController();
TextEditingController doorLength = TextEditingController();
TextEditingController doorWidth = TextEditingController();
TextEditingController doorLengthFt = TextEditingController();
TextEditingController doorWidthFt = TextEditingController();
TextEditingController doorLengthInch = TextEditingController();
TextEditingController doorWidthInch = TextEditingController();
TextEditingController tileLength = TextEditingController();
TextEditingController tileWidth = TextEditingController();
TextEditingController tileLengthInch = TextEditingController();
TextEditingController tileWidthInch = TextEditingController();
I use these text editing controllers in different text field form.
any help is highly appreciated.
Upvotes: 2
Views: 309
Reputation: 1389
// Your controller Identity Name
enum YourSpecialControllerKeysNameForClass {
_Length,
_Width,
_LengthInch,
_WidthInch,
_LengthFt,
_WidthFt,
doorLength,
doorWidth,
doorLengthFt,
doorWidthFt,
doorLengthInch,
doorWidthInch,
tileLength,
tileWidth,
tileLengthInch,
tileWidthInch,
}
// Create each for controller names
Map<YourSpecialControllerKeysNameForClass, TextEditingController> createTextControllers() {
Map<YourSpecialControllerKeysNameForClass, TextEditingController> createdList = {};
createdList.addEntries(YourSpecialControllerKeysNameForClass.values.map((e) => MapEntry<YourSpecialControllerKeysNameForClass, TextEditingController>(e, TextEditingController())).toList());
return createdList;
}
// Get Controllers By Name
TextEditingController getTextController(YourSpecialControllerKeysNameForClass key) {
return controllerList.entries.toList().firstWhere((element) => element.key == key).value;
}
// And Define this any Widget
Map<YourSpecialControllerKeysNameForClass, TextEditingController> controllerList = {};
// Initialize youR contollers in initState
initState() {
// Create Contoller
controllerList = createTextControllers();
}
// Usage
getTextController(YourSpecialControllerKeysNameForClass._Length);
///
///// If you send data to the list then only what you send is disposed.
//// If you don't, they are all disposed.
///
void disposeAllController({List<YourSpecialControllerKeysNameForClass>? onlyList}) {
if (onlyList != null) {
controllerList.entries.where((element) => onlyList.contains(element.key)).toList().map((e) => e.value.dispose());
} else {
controllerList.values.map((e) => e.dispose());
}
}
Upvotes: 1