getProperties method

  1. @override
Map<String, dynamic> getProperties()
override

Implementation

@override
Map<String, dynamic> getProperties() {
  Map<String, dynamic> properties = super.getProperties();

  properties.addAll({
    WidgetProperty.className.name: RanorexSupportedClassName.uiTextField,
    WidgetProperty.text.name: '',
    WidgetProperty.textColor.name: '',
    WidgetProperty.backgroundColor.name: '',
    WidgetProperty.selectionStart.name: 0,
    WidgetProperty.selectionLength.name: 0,
    WidgetProperty.selectionText.name: '',
  });

  if (element.widget is EditableText) {
    final EditableText editableTextWidget = element.widget as EditableText;
    final TextEditingController? controller = editableTextWidget.controller;

    properties[WidgetProperty.text.name] = controller?.text ?? '';
    properties[WidgetProperty.textColor.name] = editableTextWidget
                .style.color !=
            null
        ? '#${(editableTextWidget.style.color!.value & 0xFFFFFF).toRadixString(16).padLeft(6, '0').toUpperCase()}'
        : '';

    final TextSelection selection =
        controller?.selection ?? const TextSelection.collapsed(offset: 0);
    properties[WidgetProperty.selectionStart.name] = selection.start;
    properties[WidgetProperty.selectionLength.name] =
        selection.end - selection.start;
    if (selection.end > selection.start) {
      properties[WidgetProperty.selectionText.name] =
          controller?.text.substring(selection.start, selection.end);
    }
    properties[WidgetProperty.hasFocus.name] =
        editableTextWidget.focusNode.hasFocus;
  } else if (element.widget is TextField) {
    final TextField textFieldWidget = element.widget as TextField;
    final TextEditingController? controller = textFieldWidget.controller;

    properties[WidgetProperty.text.name] = controller?.text ?? '';
    properties[WidgetProperty.textColor.name] = textFieldWidget
                .style?.color !=
            null
        ? '#${(textFieldWidget.style!.color!.value & 0xFFFFFF).toRadixString(16).padLeft(6, '0').toUpperCase()}'
        : '';
    properties[WidgetProperty.backgroundColor.name] = textFieldWidget
                .decoration?.fillColor !=
            null
        ? '#${(textFieldWidget.decoration!.fillColor!.value & 0xFFFFFF).toRadixString(16).padLeft(6, '0').toUpperCase()}'
        : '';

    final TextSelection selection =
        controller?.selection ?? const TextSelection.collapsed(offset: 0);
    properties[WidgetProperty.selectionStart.name] = selection.start;
    properties[WidgetProperty.selectionLength.name] =
        selection.end - selection.start;
    if (selection.end > selection.start) {
      properties[WidgetProperty.selectionText.name] =
          controller?.text.substring(selection.start, selection.end);
    }
    properties[WidgetProperty.hasFocus.name] =
        textFieldWidget.focusNode?.hasFocus ?? false;
  } else if (element.widget is TextFormField) {
    final TextFormField textFormFieldWidget = element.widget as TextFormField;
    final TextEditingController? controller = textFormFieldWidget.controller;

    properties[WidgetProperty.text.name] = controller?.text ?? '';

    final TextSelection selection =
        controller?.selection ?? const TextSelection.collapsed(offset: 0);
    properties[WidgetProperty.selectionStart.name] = selection.start;
    properties[WidgetProperty.selectionLength.name] =
        selection.end - selection.start;
    if (selection.end > selection.start) {
      properties[WidgetProperty.selectionText.name] =
          controller?.text.substring(selection.start, selection.end);
    }
  }

  return properties;
}