PRM393Chưa đoKỳ 8Chuyên ngành Cập nhật 07/09/2026
Lập trình di động (Flutter) - Mobile Programming
512Câu hỏi
1Bộ đề
15Chủ đề
5,02 đánh giá
Câu hỏi của môn
344/512 câuCòn 168
325Unit tests are specifically designed to validate the visual layout and rendering of Flutter widgets.2 lựa chọnKhó33% trả lời đúng
A
TrueB
FalseLời giải
Mở trang câu hỏi này →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.
AControl focus
BChange font size
CManage state
DAdd labels, icons, and hint text
Lời giải
Mở trang câu hỏi này →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.
327What is `AutovalidateMode.onUserInteraction`?4 lựa chọn
AValidate after the user interacts with a field — balances UX
BValidate every frame
CNever validate
DOnly for plain `TextField`
Lời giải
Mở trang câu hỏi này →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.
328What is the purpose of a `FocusNode` in Flutter?4 lựa chọn
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
Mở trang câu hỏi này →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ả.
329What is the purpose of focusNode in a TextField?4 lựa chọn
AHandle validation
BControl which widget has keyboard focus
CManage text value
DStyle the input
Lời giải
Mở trang câu hỏi này →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.
330What 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
Mở trang câu hỏi này →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.
331What is the role of a `4 lựa chọncó codeKhó33% trả lời đúng
GlobalKey<FormState>` in Flutter forms?AIt allows a single codebase to render UI using its own engine across different platforms.
BHot Reload updates the UI without losing state, while Hot Restart resets the app state.
CIt ensures the UI avoids system intrusions like notches, status bars, and camera cutouts.
DIt uniquely identifies the Form and allows access to its state for validation and saving.
Lời giải
Mở trang câu hỏi này →Trong Flutter, `GlobalKey<FormState>`đóng vai trò quan trọng trong việc quản lý trạng thái của các form. Nó giúp duy trì trạng thái của form và cho phép truy cập trạng thái này để thực hiện các tác vụ như xác thực và lưu trữ dữ liệu. Điều này cho phép các nhà phát triển dễ dàng quản lý và cập nhật trạng thái của form mà không cần phải viết mã phức tạp. Ngoài ra, `GlobalKey<FormState>`cũng giúp giảm thiểu lỗi và tăng hiệu suất khi sử dụng các form trong ứng dụng Flutter.
332Which `AutovalidateMode` is recommended to provide immediate feedback to the user as they type in a form?4 lựa chọn
A
rootBundle.loadString()B
AutovalidateMode.onUserInteractionC
flutter_local_notificationsD
tester.pumpAndSettle()Lời giải
Mở trang câu hỏi này →Để cung cấp phản hồi ngay lập tức cho người dùng khi họ nhập vào một biểu mẫu, bạn nên sử dụng AutovalidateMode.onUserInteraction. Điều này cho phép kiểm tra nhập liệu ngay lập tức khi người dùng nhập vào, giúp người dùng nhận được phản hồi tức thời về việc nhập liệu của họ. Điều này đặc biệt hữu ích khi người dùng nhập vào một biểu mẫu và muốn biết ngay lập tức liệu nhập liệu của họ có hợp lệ hay không. Ngoài ra, sử dụng AutovalidateMode.onUserInteraction cũng giúp người dùng nhận được phản hồi ngay lập tức khi họ thực hiện các hành động như nhấn nút hoặc thay đổi nhập liệu.
333Which Flutter class is used to define custom themes, including colours and font styles, for the entire app?4 lựa chọnTrung bình67% trả lời đúng
A
runApp()B
ThemeDataC
main.dartD
validatorLời giải
Mở trang câu hỏi này →Để định nghĩa các chủ đề tùy chỉnh, bao gồm màu sắc và kiểu font, cho toàn bộ ứng dụng Flutter, bạn cần sử dụng lớp ThemeData. Lớp này cho phép bạn tạo ra các chủ đề tùy chỉnh có thể được áp dụng cho toàn bộ ứng dụng. Bạn có thể sử dụng ThemeData để định nghĩa màu sắc, kiểu font, kích thước font, và các thuộc tính khác để tạo ra một chủ đề duy nhất cho ứng dụng của mình. Ngoài ra, bạn cũng có thể sử dụng ThemeData để tạo ra các chủ đề khác nhau cho các màn hình hoặc các phần khác nhau của ứng dụng.
334Which Flutter tool provides information about the screen's size, orientation, and padding?4 lựa chọn
A
MediaQueryB
validatorC
main.dartD
implementsLời giải
Mở trang câu hỏi này →Để xác định kích thước màn hình, hướng màn hình và khoảng trống của màn hình trong Flutter, bạn có thể sử dụng công cụ 'MediaQuery'. 'MediaQuery' cung cấp thông tin về kích thước màn hình, hướng màn hình và khoảng trống của màn hình, giúp bạn có thể điều chỉnh ứng dụng của mình để phù hợp với các thiết bị khác nhau. Ví dụ, bạn có thể sử dụng 'MediaQuery' để lấy kích thước màn hình và điều chỉnh vị trí của các widget trong ứng dụng của mình. Ngoài ra, 'MediaQuery' cũng cung cấp các phương thức để lấy thông tin về hướng màn hình và khoảng trống của màn hình, giúp bạn có thể điều chỉnh ứng dụng của mình để phù hợp với các thiết bị khác nhau.
335Which package is used to display notifications locally on a user's device without a push server?4 lựa chọnTrung bình67% trả lời đúng
A
flutter_local_notificationsB
rootBundle.loadString()C
AutovalidateMode.onUserInteractionD
tester.pumpAndSettle()Lời giải
Mở trang câu hỏi này →Để hiển thị thông báo địa phương trên thiết bị của người dùng mà không cần sử dụng một máy chủ đẩy, chúng ta cần sử dụng gói phần mềm phù hợp. Trong các lựa chọn đã cho, gói phần mềm được sử dụng để hiển thị thông báo địa phương là "flutter_local_notifications". Đây là một gói phần mềm phổ biến được sử dụng để hiển thị thông báo trên thiết bị di động chạy hệ điều hành Android và iOS. Nó cho phép bạn tạo và hiển thị thông báo địa phương mà không cần sử dụng một máy chủ đẩy. Ngoài ra, nó cũng cung cấp các tính năng như quản lý thông báo, tùy chỉnh thông báo và hỗ trợ đa ngôn ngữ. Vì vậy, nếu bạn cần hiển thị thông báo địa phương trên thiết bị của người dùng mà không cần sử dụng một máy chủ đẩy, "flutter_local_notifications" là lựa chọn phù hợp.
336Which property of a `TextFormField` is used to define custom logic for checking if the input is valid?4 lựa chọn
A
main.dartB
validatorC
runApp()D
ThemeDataLời giải
Mở trang câu hỏi này →Để xác định logic tùy chỉnh để kiểm tra xem đầu vào có hợp lệ hay không, bạn cần sử dụng thuộc tính "validator" của "TextFormField". Thuộc tính này cho phép bạn định nghĩa các chức năng kiểm tra để xác minh dữ liệu nhập vào.
337Why call `validate()` before `save()`?4 lựa chọn
A`validate` clears the form
BOrder does not matter
COnly commit data via `save()` when fields are valid
D`save()` always throws
Lời giải
Mở trang câu hỏi này →Khi gọi hàm `validate()` trước `save()`, mục đích chính là để kiểm tra dữ liệu nhập vào có hợp lệ hay không. Nếu dữ liệu không hợp lệ, hàm `validate()` sẽ tự động báo lỗi và ngăn chặn việc lưu trữ dữ liệu vào cơ sở dữ liệu. Điều này giúp đảm bảo rằng dữ liệu được lưu trữ vào cơ sở dữ liệu luôn chính xác và hợp lệ. Vì vậy, việc gọi hàm `validate()` trước `save()` là một bước quan trọng trong quy trình lưu trữ dữ liệu.
338'FutureBuilder' automatically rebuilds its UI when the state of an asynchronous operation changes.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →FutureBuilder là một widget trong Flutter có khả năng tự động cập nhật giao diện khi trạng thái của một hoạt động bất đồng bộ thay đổi. Điều này có nghĩa là khi bạn thực hiện một yêu cầu mạng hoặc một quá trình tính toán phức tạp, FutureBuilder sẽ tự động cập nhật giao diện của mình khi kết quả của hoạt động đó thay đổi. Điều này giúp bạn có thể hiển thị trạng thái hiện tại của hoạt động mà không cần phải viết mã phức tạp để cập nhật giao diện.
339'json.decode()' is a method from the 'dart:convert' library used to transform a JSON string into a Map or List.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Mẹo sử dụng json.decode() trong Dart là một phương thức từ thư viện 'dart:convert' giúp chuyển đổi một chuỗi JSON thành một Map hoặc List. Phương thức này rất hữu ích khi bạn cần xử lý dữ liệu JSON trong ứng dụng của mình. Ví dụ, bạn có thể sử dụng json.decode() để chuyển đổi một chuỗi JSON thành một Map và sau đó sử dụng các khóa và giá trị trong Map để truy cập và xử lý dữ liệu. Ngoài ra, phương thức này cũng giúp giảm thiểu lỗi khi xử lý dữ liệu JSON, vì nó sẽ tự động chuyển đổi dữ liệu thành các loại dữ liệu phù hợp.
340`Uri.parse` is used to?4 lựa chọn
AReplace `jsonDecode`
BParse JSON
CBuild a `Uri` from a URL string for `http.get`/`post`
DOnly validate email
Lời giải
Mở trang câu hỏi này →Hàm `Uri.parse` được sử dụng để xây dựng một đối tượng `Uri` từ một chuỗi URL. Điều này thường được sử dụng trong các yêu cầu HTTP GET hoặc POST để xác định địa chỉ URL của một trang web hoặc một nguồn dữ liệu. Ví dụ, nếu bạn muốn gửi một yêu cầu GET đến trang web https://example.com/api/data, bạn có thể sử dụng hàm `Uri.parse` để tạo một đối tượng `Uri` từ chuỗi URL này. Đối tượng `Uri` này sau đó có thể được sử dụng trong các phương thức HTTP để gửi yêu cầu đến trang web.
341A 'Retry' button is a recommended UX element when an API call results in an error state.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Một nút 'Retry' (Làm lại) là một yếu tố UX được khuyến nghị khi một cuộc gọi API dẫn đến trạng thái lỗi. Khi một ứng dụng web thực hiện một cuộc gọi API, nó có thể gặp phải một số vấn đề như kết nối mạng yếu, dữ liệu không chính xác hoặc các vấn đề khác. Trong trường hợp này, nút 'Retry' sẽ giúp người dùng có thể thực hiện lại cuộc gọi API một cách dễ dàng. Điều này giúp cải thiện trải nghiệm người dùng và tăng cường độ tin cậy của ứng dụng. Ngoài ra, nút 'Retry' cũng giúp ứng dụng có thể tự động hóa quá trình xử lý lỗi và giảm thiểu thời gian chờ đợi của người dùng.
342A 'Service Layer' (ApiService) should handle networking logic to separate it from the UI code.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Một 'Service Layer' (ApiService) nên xử lý logic mạng để tách biệt nó khỏi mã nguồn UI. Điều này giúp giảm thiểu sự phụ thuộc giữa các lớp và tăng tính bảo trì của ứng dụng. Khi logic mạng được tách biệt khỏi mã nguồn UI, bạn có thể dễ dàng thay đổi hoặc cập nhật logic mạng mà không ảnh hưởng đến giao diện người dùng. Điều này cũng giúp giảm thiểu sự phức tạp của mã nguồn và tăng hiệu suất của ứng dụng. Ngoài ra, việc tách biệt logic mạng cũng giúp dễ dàng thực hiện các tính năng mới mà không ảnh hưởng đến mã nguồn hiện có.
343Hot Reload resets the entire application state and restarts the app from the beginning.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Hot Reload là một tính năng giúp bạn cập nhật mã nguồn của ứng dụng mà không cần phải khởi động lại ứng dụng. Tuy nhiên, điều quan trọng cần lưu ý là Hot Reload không phải lúc nào cũng reset toàn bộ trạng thái của ứng dụng. Nó chỉ cập nhật các thay đổi trong mã nguồn mà không ảnh hưởng đến trạng thái hiện tại của ứng dụng. Vì vậy, câu trả lời đúng cho câu hỏi này là không phải là True.
AIt uniquely identifies the Form and allows access to its state for validation and saving.
BIt searches the widget tree for a widget that contains the specified string of text.
CIt allows a single codebase to render UI using its own engine across different platforms.
DHot Reload updates the UI without losing state, while Hot Restart resets the app state.
Lời giải
Mở trang câu hỏi này →Hot Reload và Hot Restart là hai tính năng quan trọng trong Flutter giúp tăng tốc độ phát triển ứng dụng. Hot Reload cho phép cập nhật mã nguồn mà không cần phải khởi động lại ứng dụng, giúp bạn xem được kết quả ngay lập tức. Trong khi đó, Hot Restart lại khởi động lại ứng dụng từ đầu, giúp bạn có thể thử nghiệm các thay đổi mà không ảnh hưởng đến trạng thái hiện tại của ứng dụng. Điều này giúp bạn có thể nhanh chóng thử nghiệm và sửa lỗi trong quá trình phát triển ứng dụng.