У меня много контроллеров редактирования текста, и вместо того, чтобы повторять и писать снова и снова, есть ли способ создать список и назначить его контроллеру?
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();
Я использую эти контроллеры редактирования текста в другой форме текстового поля.
Любая помощь высоко ценится.





// 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());
}
}
Хорошо, используйте toMap() вместо toHashMap()
братан. та же ошибка toMap() также не работает
Это действительно работает. Спасибо большое. Я очень ценю ваше время и помощь. Я инженер-строитель и на 90% разработал приложение для ускорения инженерных расчетов. Я делаю все это сам, и приложение отлично работает, когда я тестирую его на своем мобильном телефоне. Я узнал все из Интернета и таких людей, как вы, сделайте так, чтобы мы, новички, могли учиться и оставаться мотивированными.
Пожалуйста!, рад, что смог помочь
Братан, подскажи пожалуйста, как убрать весь список сразу. или я должен распоряжаться ими один за другим в вызове удаления.
Конечно, вы можете перепроверить мой ответ
очередной раз. Спасибо большое за помощь. Я очень ценю это.
Привет, большое спасибо за помощь, я очень ценю это. Я скопировал ваш код и заменил имена, но он выдает ошибку: «Метод toHashMap не определен для типа «Список». Попробуйте исправить имя на имя существующего метода или определить метод с именем «toHashMap». Еще немного помощи, пожалуйста. Спасибо