قراءة حقل باستخدام Controller
جزء من قسم إضافة التفاعلية في رحلة Flutter على Coddy. الدرس 24 من 34.
تلتقط onChanged كل حرف. غالبًا ما تريد النص فقط عند الضغط على زر، مثل «إضافة» أو «إرسال». لهذا، أعطِ الحقل متحكمًا:
final TextEditingController _controller = TextEditingController();
TextField(controller: _controller)يوجد المتحكم في الحالة، بجانب متغيراتك الأخرى. وهو final لأنه يظل المتحكم نفسه دائمًا؛ ولا يتغير سوى النص الموجود بداخله. يحتوي _controller.text على ما يحمله الحقل الآن، ويفرغ _controller.clear() محتواه.
void _send() {
print(_controller.text);
_controller.clear();
}ينبغي التخلص من المتحكم عند التخلص من شاشته. لهذا الغرض تُستخدم dispose: تستدعيها Flutter عندما تزول الحالة.
@override
void dispose() {
_controller.dispose();
super.dispose();
}التحدي
متوسط- أضف
final TextEditingController _controllerإلى الحالة، ومرّره إلى الحقل باستخدامcontroller:. - اجعل
_addيعرض نص الحقل على هيئةLast added: Buy milk، ثم أفرغ الحقل. - أضف الطريقة
disposeالواردة في الشرح النظري.
جرّب بنفسك
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _last = 'nothing';
void _add() {}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Tasks')),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextField(
decoration: const InputDecoration(
labelText: 'New task',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 12),
ElevatedButton(onPressed: _add, child: const Text('Add')),
const SizedBox(height: 24),
Text('Last added: $_last', style: const TextStyle(fontSize: 20)),
],
),
),
);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس إضافة التفاعلية
1الأزرار
زرّك الأولالطباعة في وحدة التحكمالأزرار النصية والمحددة بإطارأزرار الأيقوناتزر الإجراء العائم7مفاتيح التبديل وشرائح التمرير
التشغيل والإيقاف باستخدام مفتاححدّد مربع الاختياراختر قيمة باستخدام شريط التمرير3عناصر واجهة ذات حالة
صنف Widget خاص بكعرض SnackBarيعيد setState رسم الشاشةاكتب StatefulWidgetعدّاد تصاعدي وتنازلييحافظ Hot Reload على الحالة6حقول النص
حقل النص الأولالتفاعل مع الكتابةقراءة حقل باستخدام Controllerالأرقام من حقل نصالأعداد العشرية باستخدام toStringAsFixedتدرّب بنفسك: مترجم Flutter عبر الإنترنت