Baca Kolom dengan Controller
Termasuk bagian Membuat Aplikasi Interaktif dalam perjalanan Flutter di Coddy. Pelajaran 24 dari 34.
onChanged menerima setiap huruf. Sering kali kamu hanya ingin mengambil teks saat tombol ditekan, seperti Add atau Send. Untuk itu, berikan field sebuah controller:
final TextEditingController _controller = TextEditingController();
TextField(controller: _controller)Controller berada di State, bersama variabel-variabelmu yang lain. Controller ini final karena selalu sama, hanya teks di dalamnya yang berubah. _controller.text adalah isi field saat ini, dan _controller.clear() mengosongkannya.
void _send() {
print(_controller.text);
_controller.clear();
}Controller sebaiknya dibuang saat layarnya ditutup. Itulah fungsi dispose: Flutter memanggilnya saat State tidak lagi digunakan.
@override
void dispose() {
_controller.dispose();
super.dispose();
}Tantangan
Sedang- Tambahkan
final TextEditingController _controllerke State dan berikan ke field dengancontroller:. - Buat
_addmenampilkan teks field sebagaiLast added: Buy milk, lalu kosongkan field. - Tambahkan method
disposedari teori.
Coba sendiri
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)),
],
),
),
);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membuat Aplikasi Interaktif
3Widget dengan State
Buat class Widget SendiriTampilkan SnackBarsetState Menggambar Ulang LayarTulis StatefulWidgetNaikkan dan Turunkan PenghitungHot Reload Mempertahankan State6Kolom Teks
Kolom Teks PertamamuTanggapi PengetikanBaca Kolom dengan ControllerAngka dari Kolom TeksDesimal dengan toStringAsFixedLatihan sendiri: Compiler Flutter online