anchor.diff:    /// Creates a text input field.
     ///
     /// By default, the input uses a keyboard appropriate for text entry.
  +  ///
  +  /// The [formField] argument is required if the [Input] has an ancestor [Form].
     Input({
       Key key,
       this.value,
  
positive.code:     ThemeData themeData = Theme.of(context);
      BuildContext focusContext = focusKey.currentContext;
      bool focused = focusContext != null && Focus.at(focusContext, autofocus: config.autofocus);
      if (_formData == null)
        _formData = _FormFieldData.maybeCreate(context, this);
      InputValue value =  _formData?.value ?? config.value ?? InputValue.empty;
      ValueChanged<InputValue> onChanged = _formData?.onChanged ?? config.onChanged;
      ValueChanged<InputValue> onSubmitted = _formData?.onSubmitted ?? config.onSubmitted;
  
negative.code:   final String hintText;
  
    /// Text to show when the input text is invalid.
    ///
    /// If this is set, then the [formField]'s [FormField.validator], if any, is
    /// ignored.
    final String errorText;
  
    /// The style to use for the text being edited.
    final TextStyle style;
  
    /// Whether to hide the text being edited (e.g., for passwords).
    ///
    /// When this is set to true, all the characters in the input are replaced by
    /// U+2022 BULLET characters (•).
    final bool hideText;
  
    /// Whether the input field is part of a dense form (i.e., uses less vertical space).
    final bool isDense;
  
    /// Whether this input field should focus itself if nothing else is already focused.
    final bool autofocus;
  
    /// The maximum number of lines for the text to span, wrapping if necessary.
  