Bir Alanı Controller ile Okuma
Coddy'nin Flutter Journey'sinin Etkileşimli Uygulamalar bölümünün bir parçası. Ders 24 / 34.
onChanged her harfi algılar. Çoğu zaman metni yalnızca Ekle veya Gönder gibi bir düğmeye basıldığında almak istersin. Bunun için alana bir denetleyici ver:
final TextEditingController _controller = TextEditingController();
TextField(controller: _controller)Denetleyici, diğer değişkenlerinin yanında State içinde bulunur. final olarak tanımlanır çünkü denetleyicinin kendisi hep aynıdır; yalnızca içindeki metin değişir. _controller.text alanın şu anda içerdiği metindir ve _controller.clear() onu boşaltır.
void _send() {
print(_controller.text);
_controller.clear();
}Bir denetleyici, ekranı kapatıldığında bellekten kaldırılmalıdır. dispose bunun içindir: State ortadan kalktığında Flutter bunu çağırır.
@override
void dispose() {
_controller.dispose();
super.dispose();
}Görev
Orta- State'e bir
final TextEditingController _controllerekle vecontroller:ile alanı denetleyiciye bağla. _addişlevinin alanın metniniLast added: Buy milkolarak göstermesini, ardından alanı boşaltmasını sağla.- Kuramsal bölümdeki
disposeyöntemini ekle.
Kendin dene
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)),
],
),
),
);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Etkileşimli Uygulamalar bölümündeki tüm dersler
7Anahtarlar ve Kaydırıcılar
Bir Anahtarla Açıp KapatmaBir Onay Kutusunu İşaretlemeKaydırıcıyla Bir Değer Seçme3Durum Tutan Widget'lar
Kendi Widget SınıfınızSnackBar GöstermesetState Ekranı Yeniden ÇizerStatefulWidget YazmaSayacı Artırma ve AzaltmaHot Reload Durumu Korur6Metin Alanları
İlk Metin AlanınızYazı Yazmaya Tepki VerinBir Alanı Controller ile OkumaMetin Alanından SayılartoStringAsFixed ile Ondalık SayılarKendi başına pratik yap: Online Flutter derleyicisi