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.
CodePudding user response:
// 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);