Flutter: как наследовать конструктор виджета через extends

#flutter

#flutter

Вопрос:

Я хочу написать простой Customizedtextfieldwidget, который наследуется от textfieldwidget с некоторым заданным атрибутом.

Например:

 class CustomizedTextFieldWidget extends TextFormField {
  CustomizedTextFieldWidget() : super(
    textAlign: TextAlign.right
  );
}
 

Я хочу использовать виджет так же, как TextFormField, который унаследовал все атрибуты TextFormField, такие как:

 CustomizedTextFieldWidget(decoration: InputDecoration(...))
 

Могу ли я как-нибудь это сделать?

Обновить:

Поскольку я собираюсь часто использовать виджет и хотел бы сделать свой код немного чище, есть ли какой-либо способ экспортировать настройку атрибута TextFieldWidget, чтобы:

 TextFieldWidget(
  setting: Mysetting,
   //usual attribute afterward
)
 

Ответ №1:

попробуйте

 class CustomizedTextFieldWidget extends TextFormField {
  CustomizedTextFieldWidget({InputDecoration decoration}) : super(
    decoration: decoration,
  );
}
 

Комментарии:

1. Означает ли это, что если у меня есть другой атрибут, который я хотел бы использовать, единственный способ сделать это — поместить их как часть ввода constructor в мой настраиваемый класс widget? Поскольку я собираюсь часто использовать виджет и хотел бы сделать свой код немного чище, есть ли какой-нибудь способ, например, экспортировать настройку атрибута TextFieldWidget, такую, что: TextFieldWidget(настройка: Mysetting, //обычный атрибут после)

2. это единственный способ, который я знаю до сих пор

3. Тем не менее, большое вам спасибо, ваше решение все еще помогает. <3

4. В общем, композиция предпочтительнее наследования для виджетов, потому что элементы, которые должны быть предоставлены конструктору, могут со временем увеличиваться, и ваш подкласс станет недействительным или несовместимым.