Здравствуй, привет, все здесь бывший трудно заставитьAndroidразработан, изначальноAndroidЯ работала с удовольствием, но на меня повлияли некоторые влияния и я сменила профессию😂, но я просто не могу позволить себе еду, и я не сдамся, если не смогу найти работуAndroidРазвивать! ,FlutterТакой ароматный! ! я учу себяFlutterС тех пор меня вдохновляли статьи многих старших братьев, поэтому я также начал писать статьи и делиться ими со студентами, которым также нужна помощь.
Коробка ввода текста текстового поля
TextFieldЯ думаю, что все знакомы с полем ввода текста, поэтому эта статья поможет вам изучить его более внимательно.TextFieldвсе из.
Рекомендуемое время чтения:Все в порядке, давайте посмотрим
Вы закончили? наивно, то, что этот код собирает, является сообщением об ошибке, сообщением об ошибке после уточнения
I/flutter ( 7877): No Material widget found.`
I/flutter ( 7877): TextField widgets require a Material widget ancestor.
I/flutter ( 7877): Material itself, such as a Card, Dialog, Drawer, or Scaffold.
Эту ошибку легко решить,TextFieldнужно бытьMaterialМожно использовать пакет компонентов, мы можем использоватьCard,Dialog,Drawer,Scaffold, даже напрямую используяMaterial. Но нам не нужно оборачивать его напрямую, покаTextFieldНайдите его, посмотрев вверх при рендерингеMaterialКомпоненты в порядке.
Небольшой совет: если вы хотите ограничить количество слов и не хотите, чтобы метка счетчика находилась в правом нижнем углу, вы можете использоватьinputFormatters
inputFormattersИспользуется для ограничения входного контента, мы можем настроить тот, который принимает только входной цифровой контент.inputFormatters
obscureTextИспользуется для скрытия вводимого содержимого, как правило, это свойство необходимо устанавливать при вводе пароля.
autofocusИспользуется для установки автоматического получения фокуса, по умолчаниюfalse. Примечание. НастройкиfocusNodeПосле этого свойство становится недействительным.
focusNodeиспользуется для контроляTextFieldФокус, вы также можете управлять программной клавиатурой, чтобы она появлялась и скрывалась~Если на странице несколькоTextFieldтакже можно использоватьfocusNodeконтролировать, какойTextFieldсфокусироватьсяfocusNodeВы также можете получить состояние фокуса ~
onSubmittedОбратный вызов для нажатия кнопки подтверждения программной клавиатуры
Обратите внимание, что подтверждение здесь может бытьdone,search,goЖдать
Следует также отметить, что отдельная регистрацияonSubmittedПри нажатии программная клавиатура будет закрыта ~
onEditingCompleteОбратный вызов нажатия кнопки подтверждения программной клавиатуры 😂
Этот способ и описанный вышеonSubmittedРазница в том, что
нетvalueПерезвоните
Не закрывает виртуальную клавиатуру после нажатия
Применимые сценарии Например: текущая страница имеет дваTextFieldОдин отвечает за имя пользователя, а другой отвечает за пароль.После ввода имени пользователя пользователь может, естественно, щелкнуть кнопку на программной клавиатуре, чтобы сфокусироваться на поле пароля.
textInputActionИспользуется для установки значка программной клавиатуры.Search,Next,go,previousПодождите, важно отметить, что частьInputActionможет быть толькоAndroidПлатформа имеет некоторыеInputActionможет быть толькоiOSплатформа есть.
textCapitalizationИспользуется для управления заглавными буквами вводимого пользователем текста.
textAlignвыравнивание текста
Это на самом деле очень легко понять, как и оригиналAndroidсерединаGravity, эта глава занимаетcenterВозьмите небольшой пример.
textDirectionуправлять направлением текста
style/decoration
style
Постепенно к главному событию ~,styleИспользуется для управления стилем ввода текста, например
decorationИспользуется для управления стилем поля ввода
давайте сделаем оченьMaterial Designполе ввода~
Маленький совет:errorTextа такжеhelperTextКогда содержание толькоerrorTextвступит в силу
filled/fillColor
maxLines
FlutterсерединаTextFieldФорма ввода представления по умолчанию — однострочный ввод, если установитьmaxLinesШерстяная ткань? Пожалуйста, смотрите картинку 😂~
мы устанавливаемmaxLinesПосле этого общая высота увеличивается, что, очевидно, не является тем эффектом, который нам нужен.Мы хотим, чтобы ввод автоматически переносился, когда он превышает одну строку, как нативныйAndroidизEditTextМол, как это сделать, на самом деле очень просто, вилка-┗|`О'|┛ причитать~~
onChanged/TextEditingController
Как обрабатывать ввод текста, у нас есть два способа.
onChangedПерезвоните
TextField вызывает свой обратный вызов onChanged всякий раз, когда пользователь вводит текст. Вы можете обработать этот обратный вызов, чтобы увидеть, что ввел пользователь. Например, если вы вводите текст в поле поиска, вам может потребоваться обновлять результаты поиска по мере того, как пользователь вводит текст.
Более мощный (но более совершенный) подход заключается в предоставлении TextEditingController в качестве свойства контроллера TextField. По мере того, как пользователь печатает, текст контроллера и свойства выбора постоянно обновляются. Чтобы получать уведомления об изменении этих свойств, прослушивайте контроллер с помощью метода addListener контроллера. (Если вы добавляете прослушиватель, не забудьте удалить его в методе dispose вашего объекта State).
На этом содержание этой статьи заканчивается, хотя я больше не буду этого делатьAndroidразработки, но я все еще люблю скучать по дням разработки. Поставьте перед собой небольшую цель, надеюсь, что во второй половине годаНаггетссообщество имеет50Нравится 😂