textBuilder function

Widget textBuilder(
  1. BuildContext context,
  2. Elementbase element, {
  3. ElementConfiguration? configuration,
})

Implementation

Widget textBuilder(BuildContext context, s.Elementbase element,
    {ElementConfiguration? configuration}) {
  final e = element as s.Text;
  final String? hintText = e.placeholder?.getLocalizedText(context);
  Widget widget = ReactiveTextField(
    formControlName: element.name!,
    decoration: InputDecoration(hintText: hintText),
  );

  if (e.inputType == s.TextInputType.date) {
    widget = ReactiveDateTimePicker(
      locale: Localizations.localeOf(context),
      formControlName: element.name!,
      type: ReactiveDatePickerFieldType.date,
      decoration: InputDecoration(hintText: hintText),
      firstDate: e.min.tryCastToDateTime(),
      lastDate: e.max.tryCastToDateTime(),
    );
  }
  if (e.inputType == s.TextInputType.color) {
    widget = ReactiveColorPicker(formControlName: element.name!);
  }
  if (e.inputType == s.TextInputType.email) {
    widget = ReactiveTextField(
      formControlName: element.name!,
      decoration: InputDecoration(hintText: hintText),
    );
  }
  if (e.inputType == s.TextInputType.datetimeLocal) {
    widget = ReactiveDateTimePicker(
      locale: Localizations.localeOf(context),
      formControlName: element.name!,
      type: ReactiveDatePickerFieldType.dateTime,
      decoration: InputDecoration(hintText: hintText),
    );
  }

  if (e.inputType == s.TextInputType.month) {
    //TODO
  }
  if (e.inputType == s.TextInputType.password) {
    widget = ReactiveTextField(
      obscureText: true,
      formControlName: element.name!,
      decoration: InputDecoration(hintText: hintText),
    );
  }
  if (e.inputType == s.TextInputType.range) {
    //TODO
  }
  if (e.inputType == s.TextInputType.tel) {
    widget = ReactiveTextField(
      keyboardType: TextInputType.phone,
      formControlName: element.name!,
      decoration: InputDecoration(hintText: hintText),
    );
  }
  if (e.inputType == s.TextInputType.time) {
    widget = ReactiveDateTimePicker(
      locale: Localizations.localeOf(context),
      formControlName: element.name!,
      type: ReactiveDatePickerFieldType.time,
      decoration: InputDecoration(hintText: hintText),
    );
  }
  if (e.inputType == s.TextInputType.url) {
    //TODO
  }
  if (e.inputType == s.TextInputType.week) {
    //TODO
  }
  if (e.inputType == s.TextInputType.number) {
    widget = ReactiveTextField(
      inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[-+0-9.]'))],
      keyboardType: TextInputType.number,
      formControlName: element.name!,
      valueAccessor: NumStringValueAccessor(),
      decoration: InputDecoration(hintText: hintText),
    );
  }
  return widget.wrapQuestionTitle(context, element,
      configuration: configuration);
}