Ngân hàng câu hỏi của chương

Câu hỏi: PRM393 - Form và Validation

30 câu trắc nghiệm kèm lời giải của môn Lập trình di động (Flutter) - Mobile Programming, xếp theo thứ tự nhập vào ngân hàng.

Danh sách câu hỏi

20/30 câuCòn 10
1What does TextEditingController manage?4 lựa chọnDễ100% trả lời đúng
ATheme
BText input value
CValidation rules
DLayout constraints
Lời giải
ControllerText được sử dụng để quản lý giá trị nhập vào của một trường văn bản trong ứng dụng Android. Nó cho phép bạn lấy và cập nhật giá trị của trường văn bản một cách dễ dàng. Ngoài ra, nó cũng cung cấp các phương thức để kiểm tra và sửa lỗi giá trị nhập vào. Trong một ứng dụng Android, ControllerText thường được sử dụng trong các trường văn bản để quản lý giá trị nhập vào của người dùng.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
FocusNode được sử dụng để di chuyển con trỏ từ một trường văn bản sang trường văn bản khác một cách lập trình.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Mẹo để ẩn bàn phím trên thiết bị di động trong Flutter là sử dụng phương thức FocusScope.of(context).unfocus(). Phương thức này sẽ giúp bạn ẩn bàn phím khi không cần sử dụng nữa, giúp cải thiện trải nghiệm người dùng. Để sử dụng phương thức này, bạn cần phải có một đối tượng FocusNode được tạo trước đó. Khi bạn muốn ẩn bàn phím, bạn chỉ cần gọi phương thức unfocus() trên đối tượng FocusNode đó. Ví dụ, nếu bạn có một TextField và muốn ẩn bàn phím khi người dùng nhấn vào một nút, bạn có thể sử dụng phương thức FocusScope.of(context).unfocus() trong hàm onPressed của nút đó.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Trong thiết kế giao diện người dùng, 'SingleChildScrollView' là một giải pháp phổ biến để ngăn chặn tình trạng layout bị tràn khi bàn phím mềm (soft keyboard) xuất hiện. Khi người dùng nhập liệu vào một trường văn bản, bàn phím mềm sẽ mở ra và chiếm một phần màn hình. Nếu không có giải pháp thích hợp, layout có thể bị tràn và không hiển thị đầy đủ. 'SingleChildScrollView' giúp giải quyết vấn đề này bằng cách cho phép layout di chuyển khi bàn phím mềm xuất hiện, đảm bảo rằng layout luôn hiển thị đầy đủ trên màn hình.
Mở trang câu hỏi này →
5`GlobalKey<FormState>` is for?4 lựa chọncó code
Đề bài
GlobalKey<FormState>` is for?
AOnly open dialogs
BRandom key
CCall `validate()` / `save()` / `reset()` on the whole form
DReplace `Navigator`
Lời giải
Lời giải
GlobalKey<FormState>

được sử dụng để lưu trữ trạng thái của một form trong ứng dụng Flutter. Nó cho phép bạn gọi các phương thức validate(), save() và reset() trên toàn bộ form. Điều này rất hữu ích khi bạn cần kiểm tra dữ liệu nhập vào của người dùng hoặc lưu trữ dữ liệu vào cơ sở dữ liệu. Bạn có thể sử dụng GlobalKey để gọi các phương thức này trên toàn bộ form, thay vì phải gọi từng phương thức riêng lẻ trên từng widget.

Mở trang câu hỏi này →
AOnly when there is no keyboard
B`TextField` has validators
CInside `Form`, need `validator`/`onSaved` tied to `FormState`
DAlways identical
Lời giải
TextField và TextFormField là hai loại widget trong Flutter dùng để nhập liệu văn bản. TextField chỉ đơn giản là một ô nhập liệu văn bản, còn TextFormField là một loại TextField có thêm các tính năng như kiểm tra dữ liệu (validator), lưu trữ dữ liệu (onSaved) và liên kết với trạng thái của Form. Vì vậy, khi cần sử dụng TextFormField, bạn phải đặt nó trong một Form và liên kết validator/onSaved với trạng thái của Form. Điều này giúp bạn có thể kiểm tra dữ liệu nhập vào và lưu trữ dữ liệu một cách dễ dàng.
Mở trang câu hỏi này →
ASkip the form
BCrash
CSevere error
DField is valid
Lời giải
Khi 'validator' trên 'TextFormField' trả về null, điều đó có nghĩa là trường nhập liệu đã được xác thực thành công. Điều này thường xảy ra khi người dùng nhập dữ liệu hợp lệ, và không có lỗi nào được phát hiện.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải

Trong Flutter, khi sử dụng Form widget để tạo một biểu mẫu, chúng ta cần một khóa toàn cầu để xác thực và lưu trữ dữ liệu. GlobalKey<FormState> là một đối tượng được sử dụng để quản lý trạng thái của biểu mẫu. Nó cho phép chúng ta xác thực dữ liệu nhập vào và lưu trữ dữ liệu vào cơ sở dữ liệu. Nếu không có khóa toàn cầu này, biểu mẫu sẽ không thể xác thực và lưu trữ dữ liệu. Vì vậy, câu trả lời đúng là True.

Mở trang câu hỏi này →
9Clean Architecture focuses on?4 lựa chọn
AUI design
BDatabase speed
CSeparation of concerns
DAnimations
Lời giải
Clean Architecture là một mô hình kiến trúc phần mềm tập trung vào việc tách biệt các mối quan hệ giữa các phần của hệ thống. Nó nhằm mục đích tạo ra một cấu trúc rõ ràng và dễ hiểu, giúp giảm thiểu sự phức tạp và tăng cường khả năng bảo trì. Clean Architecture nhấn mạnh vào việc tách biệt giữa logic kinh doanh và logic kỹ thuật, giúp các nhà phát triển tập trung vào việc xây dựng các lớp kinh doanh độc lập mà không bị ảnh hưởng bởi các chi tiết kỹ thuật. Điều này giúp hệ thống trở nên linh hoạt và dễ dàng mở rộng.
Mở trang câu hỏi này →
ADismiss keyboard when tapping outside fields
BClear text
CEnable dark mode
DClose the app
Lời giải
Khi sử dụng GestureDetector và unfocus() trong ứng dụng di động, mục đích thường thấy là ngăn chặn bàn phím hiện lên khi người dùng chạm vào khu vực ngoài các trường nhập liệu. Điều này giúp cải thiện trải nghiệm người dùng bằng cách tránh tình trạng bàn phím che khuất các nút hoặc trường nhập liệu quan trọng. GestureDetector cho phép ứng dụng phản ứng với các hành động chạm vào màn hình, trong khi unfocus() giúp loại bỏ bàn phím khi người dùng chạm vào khu vực ngoài các trường nhập liệu. Kết hợp cả hai tính năng này giúp tạo ra một ứng dụng di động mượt mà và dễ sử dụng hơn.
Mở trang câu hỏi này →
Amain.dart
BrunApp()
Cvalidator
DThemeData
Lời giải
Trong một dự án Flutter tiêu chuẩn, tệp nào phục vụ như điểm nhập vào của ứng dụng?
Mở trang câu hỏi này →
Aimplements
Bmain.dart
Cvalidator
DMediaQuery
Lời giải
Trong Dart OOP, từ khóa nào cho phép một lớp thực hiện một giao diện bằng cách cung cấp thực hiện của riêng nó cho tất cả các phương thức? Trong Dart, từ khóa "implements" được sử dụng để cho phép một lớp thực hiện một giao diện. Điều này có nghĩa là lớp đó phải cung cấp thực hiện của riêng nó cho tất cả các phương thức được định nghĩa trong giao diện. Điều này cho phép lớp đó thực hiện giao diện và sử dụng các phương thức được định nghĩa trong giao diện. Ví dụ, nếu chúng ta có một giao diện tên "MyInterface" với một phương thức "myMethod()", chúng ta có thể tạo một lớp tên "MyClass" thực hiện giao diện "MyInterface" bằng cách sử dụng từ khóa "implements" và cung cấp thực hiện của riêng nó cho phương thức "myMethod()".
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Khi đặt 'autovalidateMode' thành 'onUserInteraction', người dùng sẽ nhận được phản hồi xác thực ngay lập tức khi nhập liệu. Điều này có nghĩa là khi người dùng nhập dữ liệu, hệ thống sẽ kiểm tra ngay lập tức và hiển thị kết quả xác thực. Điều này giúp người dùng nhận biết được lỗi ngay lập tức và có thể điều chỉnh dữ liệu của mình một cách nhanh chóng và hiệu quả. Tính năng này rất hữu ích khi người dùng nhập dữ liệu lớn hoặc phức tạp, giúp giảm thiểu thời gian và công sức cần thiết để xác thực dữ liệu.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Thuộc tính 'TextInputAction.done' cho biết bàn phím nên hiển thị nút hoàn thành thay vì nút chuyển sang trường tiếp theo. Khi bạn sử dụng 'TextInputAction.done', bàn phím sẽ hiển thị một nút hoàn thành thay vì nút chuyển sang trường tiếp theo khi nhập xong. Điều này giúp người dùng dễ dàng xác nhận và hoàn thành việc nhập liệu.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Unit tests trong Flutter được thiết kế để xác minh layout và rendering trực quan của các widget. Chúng giúp phát hiện ra các vấn đề về layout và rendering ngay từ giai đoạn đầu, trước khi ứng dụng được triển khai. Điều này giúp tiết kiệm thời gian và công sức khi phát triển ứng dụng. Ngoài ra, unit tests cũng giúp đảm bảo rằng ứng dụng hoạt động đúng như mong đợi, ngay cả khi có thay đổi về layout hoặc rendering.
Mở trang câu hỏi này →
AControl focus
BChange font size
CManage state
DAdd labels, icons, and hint text
Lời giải
Thuộc tính decoration trong TextField cho phép người dùng thêm các yếu tố như nhãn, biểu tượng và văn bản gợi ý vào TextField. Điều này giúp người dùng có thể dễ dàng hiểu được mục đích của TextField và cách sử dụng nó. Ví dụ, bạn có thể thêm một biểu tượng tìm kiếm vào TextField để người dùng biết rằng họ cần nhập một từ khóa để tìm kiếm. Tương tự, bạn có thể thêm một nhãn vào TextField để người dùng biết rằng họ cần nhập một địa chỉ email hoặc một số điện thoại. Việc thêm các yếu tố này vào TextField không chỉ giúp người dùng hiểu rõ hơn về mục đích của TextField mà còn giúp họ sử dụng nó một cách hiệu quả hơn.
Mở trang câu hỏi này →
AValidate after the user interacts with a field — balances UX
BValidate every frame
CNever validate
DOnly for plain `TextField`
Lời giải
AutovalidateMode.onUserInteraction là một cách thức tự động xác thực dữ liệu trong Flutter. Khi người dùng tương tác với một trường dữ liệu (ví dụ: nhập văn bản vào TextField), thì hệ thống sẽ tự động xác thực dữ liệu đó. Điều này giúp cân bằng giữa trải nghiệm người dùng (UX) và xác thực dữ liệu. Nếu người dùng nhập sai dữ liệu, hệ thống sẽ ngay lập tức hiển thị thông báo lỗi, giúp người dùng biết được lỗi và có thể sửa đổi dữ liệu một cách nhanh chóng. AutovalidateMode.onUserInteraction thường được sử dụng trong các trường dữ liệu quan trọng, như nhập mật khẩu hoặc xác thực thông tin cá nhân.
Mở trang câu hỏi này →
AIt is called exactly once when the widget is inserted into the tree, used for one-time initialisation.
BIt allows for the persistence of simple key-value pairs (like tokens or settings) on the device.
CIt allows a single child widget to be scrollable when it exceeds the screen's vertical or horizontal space.
DIt manages the focus state of a specific widget, such as a text field, and handles keyboard events.
Lời giải
Trong Flutter, FocusNode là một đối tượng được sử dụng để quản lý trạng thái tập trung của một widget cụ thể, chẳng hạn như một trường văn bản. Nó cũng xử lý các sự kiện bàn phím. FocusNode được gọi một lần khi widget được chèn vào cây widget và được sử dụng để thực hiện các tác vụ khởi tạo một lần. Ngoài ra, nó cũng có thể được sử dụng để thực hiện các tác vụ khi widget mất tập trung. FocusNode giúp chúng ta có thể quản lý tập trung của widget một cách linh hoạt và hiệu quả.
Mở trang câu hỏi này →
AHandle validation
BControl which widget has keyboard focus
CManage text value
DStyle the input
Lời giải
Trong trường hợp TextField, focusNode có mục đích là kiểm soát widget nào đang nhận bàn phím. Điều này có nghĩa là khi người dùng nhập liệu vào TextField, focusNode sẽ xác định widget đó đang được chọn. Ví dụ, nếu bạn có một TextField và một Button, focusNode sẽ giúp bạn xác định TextField đang được chọn để nhập liệu. Điều này rất quan trọng trong việc thiết kế giao diện người dùng (UI) vì nó giúp người dùng dễ dàng sử dụng và tương tác với ứng dụng. Ngoài ra, focusNode cũng có thể được sử dụng để tạo ra các hiệu ứng như thay đổi màu sắc hoặc hình dạng của widget khi nó được chọn.
Mở trang câu hỏi này →
20What is the purpose of onSaved callback?4 lựa chọnTrung bình67% trả lời đúng
AReset form
BValidate input
CStore form values
DDisplay errors
Lời giải
Callback onSaved được sử dụng để lưu trữ giá trị của các trường form khi người dùng rời khỏi màn hình. Điều này giúp bạn có thể lấy lại được giá trị của các trường form sau khi người dùng quay lại màn hình. Ví dụ, bạn có thể sử dụng callback này để lưu trữ giá trị của trường nhập liệu khi người dùng nhấn nút submit. Điều này giúp bạn có thể lấy lại được giá trị của trường nhập liệu sau khi người dùng rời khỏi màn hình.
Mở trang câu hỏi này →