קריאת שדה באמצעות Controller
חלק מהיחידה הוספת אינטראקטיביות במסלול ה-Flutter של Coddy. שיעור 24 מתוך 34.
onChanged מזהה כל אות. לעיתים קרובות, רוצים לקבל את הטקסט רק כשלוחצים על כפתור, כמו הוספה או שליחה. לשם כך, נותנים לשדה בקר:
final TextEditingController _controller = TextEditingController();
TextField(controller: _controller)הבקר נמצא בתוך State, לצד שאר המשתנים שלך. הוא final כי זה תמיד אותו בקר; רק הטקסט שבתוכו משתנה. _controller.text הוא הטקסט שהשדה מכיל כרגע, ו-_controller.clear() מרוקן אותו.
void _send() {
print(_controller.text);
_controller.clear();
}צריך להשליך בקר כשמסך מסולק. לשם כך נועדה dispose: Flutter קוראת לה כשמצב ה-State מסתיים.
@override
void dispose() {
_controller.dispose();
super.dispose();
}אתגר
בינוני- הוסף
final TextEditingController _controllerל־State והעבר אותו לשדה באמצעות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)),
],
),
),
);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה הוספת אינטראקטיביות
3Widgets עם מצב
מחלקת Widget משלךהצגת SnackBarsetState מצייר מחדש את המסךכתיבת StatefulWidgetמונה עולה ויורדHot Reload שומר על המצב6שדות טקסט
שדה הטקסט הראשון שלךלהגיב להקלדהקריאת שדה באמצעות Controllerמספרים מתוך שדה טקסטמספרים עשרוניים באמצעות toStringAsFixedתרגלו בעצמכם: קומפיילר Flutter אונליין