- vừa được xem lúc

Làm quen với TextField – Xử lý nhập liệu và quản lý Controller

0 0 2

Người đăng: Coder Tập Sự

Theo Viblo Asia

Giới thiệu

Ở bài trước, chúng ta đã học về Navigation trong Flutter, cách chuyển màn hìnhtruyền dữ liệu cơ bản giữa các màn hình.

Trong bài hôm nay, chúng ta sẽ tiếp tục với một khái niệm rất hay dùng trong ứng dụng thực tế: TextField – nơi để người dùng nhập liệu, ví dụ như tên, email, nội dung tìm kiếm v.v...

🎯 Mục tiêu

  • Hiểu cách sử dụng TextField trong Flutter.
  • Quản lý dữ liệu nhập vào bằng TextEditingController.
  • Hiển thị lại dữ liệu người dùng vừa nhập

TextField là gì?

TextField là widget dùng để tạo ô nhập liệu văn bản. Nó tương tự như <input> trong HTML.

Ví dụ cơ bản:

TextField( decoration: InputDecoration( labelText: 'Nhập tên của bạn', border: OutlineInputBorder(), ),
)

Quản lý dữ liệu với TextEditingController

Khi chúng ta cần lấy giá trị từ ô nhập (TextField), chúng ta cần sử dụng một đối tượng TextEditingController.

Ví dụ:

final TextEditingController _nameController = TextEditingController();

Sau đó, gán controller vào TextField:

TextField( controller: _nameController, decoration: InputDecoration( labelText: 'Tên của bạn', ),
)

Và lấy giá trị khi cần dùng:

print(_nameController.text);

Ví dụ hoàn chỉnh

Ở trên chúng ta đã tìm hiểu cách sử dụng TextField và quản lý dữ liệu với controller. Sau đây chúng ta sẽ cùng làm một ví dụ cụ thể

import 'package:flutter/material.dart'; class TextFieldExample extends StatefulWidget {  _TextFieldExampleState createState() => _TextFieldExampleState();
} class _TextFieldExampleState extends State<TextFieldExample> { final TextEditingController _nameController = TextEditingController(); String _result = '';  void dispose() { _nameController.dispose(); super.dispose(); } void _showName() { setState(() { _result = _nameController.text; }); }  Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('TextField cơ bản')), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( children: [ TextField( controller: _nameController, decoration: InputDecoration( labelText: 'Nhập tên của bạn', border: OutlineInputBorder(), ), ), SizedBox(height: 16), ElevatedButton( onPressed: _showName, child: Text('Hiển thị tên'), ), SizedBox(height: 16), Text('Tên vừa nhập: $_result'), ], ), ), ); }
}

Ở ví dụ trên chúng ta đã cùng làm một màn hình cho phép người dùng nhập tên của mình và sau đó hiển thị ra giá trị đã nhập khi người dùng click vào button Hiển thị tên

Một vài lưu ý nhỏ

  • Luôn nhớ dispose controller khi không dùng nữa để tránh rò rỉ bộ nhớ.
  • Có thể dùng thêm các tính năng nâng cao như onChanged, keyboardType, obscureText (cho mật khẩu)... sau này trong các form thực tế.

Kết luận

Bài viết có thể sẽ có nhiều thiếu sót rất mong nhận được góp ý của mọi người để mình cải thiện thêm.

Ngày mai, mình sẽ tiếp tục tìm hiểu về form – có thể là kết hợp nhiều TextField lại và kiểm tra dữ liệu nhập (validation) chẳng hạn.

Lời cuối bài xin cảm ơn mọi người đã đọc đến đây! Hẹn gặp lại mọi người ở bài viết ngày mai nhé.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 299

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

1 1 355

- vừa được xem lúc

Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart

Dart là một ngôn ngữ mới dùng cho cả Mobile và Web với Flutter Framework, thậm chí dùng cho Backend. Để giúp mọi người dễ dàng nắm bắt ngôn ngữ này hơn, 200lab Education đã tổng hợp thành bộ "bí tịch" dưới đây để tra cứu nhanh, tăng tốc phát triển phần mềm.

0 0 54

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 2: StatefulWidget vs StatelessWidget. Khi nào thì cần sử dụng cái nào?

Lời mở đầu. Ở bài trước, chúng ta đã dừng lại ở một kết thúc mở.

0 0 102

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 4: Lột trần InheritedWidget

Lời mở đầu. Trong đoạn kết của phần 2, chúng ta đã đối mặt với 1 bài toán: Làm thế nào để truyền data từ một widget cha nào đó xuống thẳng widget chắt mà không phải sử dụng constructor để truyền xuống

0 0 71

- vừa được xem lúc

Chinh phục RxDart Flutter trong 3 nốt nhạc. Nốt thứ nhất: Stream và giải thích các thuật ngữ

Lời mở đầu. Mình viết series này với mục đích chia sẻ kiến thức về RxDart trong Flutter.

0 0 80