boshqaruvchi: widget.controller , kirish formatlari: [
WhitelistingTextInputFormatter(RegExp("[0-9]")), LengthLimitingTextInputFormatter(6),
],
textAlign: TextAlign.center, bezatish: Kirish dekoratsiyasi(
chegara: OutlineInputBorder( chegara tomoni: widget.borderSide,
),
),
klaviatura turi: TextInputType.number, onChanged: widget.onChanged,
);
}
}
Sifatida siz mumkin qarang, the vidjet hisoblanadi oddiygina a TextField bilan biroz oldindan belgilangan xususiylashtirish:
Oq ro'yxatga olishTextInputFormatter imkon beradi Biz uchun belgilang a regex kiritish uchun ruxsat etilgan belgilar bilan ifoda. Klaviatura turini sozlash orqali
bilan klaviatura turi: TextInputType.number biz mumkin shuningdek chegara the ruxsat berilgan
belgilar uchun raqamlar.
LengthLimitingTextInputFormatter belgilaydi a maksimal xarakter chegara kiritish uchun.
Shuningdek, a chegara hisoblanadi qo'shildi orqali the OutlineInputBorder sinf.
Oling Eslatma ning the muhim qismi ning bu kod: boshqaruvchi: widget.controller . Mana, biz bor sozlash the boshqaruvchi ning the TextField vidjet uchun bo'l bizning Shaxsiy boshqaruvchi shunday biz qiymatini nazorat qila oladi.
Vidjetni a ga aylantiring FormField vidjeti
Kimga burilish the vidjet ichiga a FormField vidjet, biz boshlash tomonidan yaratish a vidjet bu uzaytiradi the
FormField sinf, qaysi hisoblanadi a StatefulVidget bilan biroz Shakl ob'ektlar.
Bu vaqt, qilaylik boshlash tomonidan tekshirish tashqariga the yangi vidjetlar bog'langan Davlat ob'ekt. Keling qil bu qismlarga bo'lish orqali:
// boshlang'ich qismi ning _VerificationCodeFormFieldState
final TextEditing Controller _controller = TextEditingController(matn: "");
@override
bekor initState() { super.initState();
_controller.addListener(_controllerChanged);
}
Oldingi koddan uning bitta _controller mavjudligini tekshirishingiz mumkin FormField tomonidan ishlatiladigan kontrollerni ifodalovchi maydon vidjet. Bu davlatda bo'lishi kerak shuning uchun u tartib o'zgarishlariga qarshi turadi. Ko'rib turganingizdek, u initState() da ishga tushirilgan. funktsiyasi. Bu hisoblanadi chaqirdi the birinchi vaqt the vidjet ob'ekt hisoblanadi kiritilgan yoqilgan the vidjetlar daraxt. Bu erda biz unga tinglovchini qo'shamiz, shuning uchun qiymat qachon o'zgartirilganligini bilib olamiz
_controllerChanged tinglovchi.
The qolgan vidjet quyidagicha:
bekor _controllerChanged() { didChange(_controller.text);
}
@override
bekor qayta o'rnatish() { super.reset();
_controller.text = "";
}
@override
bekor dispose() {
_controller?.removeListener(_controllerChanged); super.dispose();
}
U yerda bor shuningdek boshqa muhim usullari bu biz kerak bekor qilish uchun qilish bu ish to'g'ri: initState() yordamida biz dispose() da uning qarama-qarshi ekvivalentini topishimiz mumkin.
usuli. Bu yerda, biz uchun to'xtang tingla o'zgarishlar uchun ichida the boshqaruvchi.
The qayta o'rnatish() usuli hisoblanadi bekor qilingan, shunday biz mumkin o'rnatish the _controller.text bo'shatish uchun, kiritish maydoni yana tozalanadi.
The _controllerChanged() tinglovchi xabar beradi the super
FormFieldState didChange() orqali davlat usul, shuning uchun u o'z holatini yangilashi mumkin (orqali setState() ) va xabar bering har qanday Shakl vidjet bu o'z ichiga oladi bu haqida the o'zgartirish.
Hozir qilaylik Imtihon the FormField vidjet kod uchun qarang Qanday bu ishlari:
Do'stlaringiz bilan baham: |