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
244/512 câuCòn 268
AHeavy work is scheduled for later without blocking the Dart isolate synchronously for too long
BBecause network runs on the UI thread
CBecause `await` disables animation
DBecause Flutter has no event loop
Lời giải
Mở trang câu hỏi này →Khi thực hiện các yêu cầu mạng trong Flutter, việc sử dụng `async`/`await` giúp giữ cho giao diện người dùng (UI) phản hồi nhanh chóng. Điều này đạt được vì Dart isolate không bị chặn (block) đồng bộ trong thời gian dài. Thay vào đó, các tác vụ nặng được lịch biểu (schedule) thực hiện sau này mà không làm gián đoạn hoạt động của isolate. Điều này cho phép Flutter tiếp tục cập nhật giao diện người dùng một cách liên tục, duy trì trải nghiệm mượt mà cho người dùng. Ngoài ra, việc sử dụng `async`/`await` cũng giúp giảm thiểu khả năng xảy ra lỗi do các tác vụ mạng bị chặn.
226'ThemeData' allows for global customisation of colours, fonts, and widget styles across an app.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →ThemeData cho phép tùy chỉnh toàn cầu màu sắc, font và kiểu widget trên toàn ứng dụng. Điều này có nghĩa là bạn có thể định nghĩa một bộ chủ đề duy nhất và áp dụng nó cho toàn bộ ứng dụng, thay vì phải lặp lại các định nghĩa cho từng widget riêng lẻ. Điều này giúp tạo ra một giao diện thống nhất và dễ dàng quản lý.
AAlways rebuilds
BFramework may skip rebuilding the subtree when config is unchanged
CIncreases APK size
DTests only
Lời giải
Mở trang câu hỏi này →Khi sử dụng constructor `const` cho widget, nếu các tham số không thay đổi, nó giúp framework bỏ qua việc rebuild lại cây widget khi cấu hình không thay đổi. Điều này giúp tăng hiệu suất và giảm thời gian rebuild. Khi các tham số không thay đổi, framework có thể sử dụng widget đã được tạo trước đó thay vì tạo lại từ đầu. Điều này đặc biệt hữu ích khi bạn có nhiều widget có cấu hình giống nhau, vì nó giúp giảm thiểu số lần rebuild và tăng tốc độ render.
228Every Flutter application must call the 'runApp()' function to attach the root widget to the screen.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Mỗi ứng dụng Flutter đều phải gọi hàm 'runApp()' để gắn widget gốc vào màn hình. Hàm này đóng vai trò quan trọng trong việc khởi tạo ứng dụng Flutter. Khi gọi hàm 'runApp()', bạn cần truyền vào một widget gốc (root widget) mà bạn muốn hiển thị trên màn hình. Widget gốc có thể là một widget đơn giản như Text hoặc một widget phức tạp như một màn hình đăng nhập. Sau khi gọi hàm 'runApp()', ứng dụng Flutter sẽ bắt đầu chạy và hiển thị widget gốc trên màn hình. Nếu không gọi hàm 'runApp()', ứng dụng Flutter sẽ không thể hiển thị bất kỳ widget nào trên màn hình.
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Trong Flutter, 'Scaffold' cung cấp cấu trúc hình ảnh cơ bản cho một màn hình, bao gồm AppBar và FloatingActionButton. Nó là một lớp cơ sở giúp tạo ra giao diện người dùng cơ bản cho ứng dụng. Scaffold thường được sử dụng như một lớp cha để chứa các widget khác như Body, Drawer, BottomNavigationBar, v.v. Nó cung cấp các thuộc tính như appBar, body, floatingActionButton, drawer, bottomNavigationBar, v.v. để giúp tạo ra giao diện người dùng phức tạp. Ngoài ra, Scaffold cũng cung cấp các phương thức như showSnackBar, showBottomSheet để giúp tạo ra các hiệu ứng giao diện người dùng.
230Material Design root widget is?4 lựa chọn
A
ScaffoldB
ContainerC
ColumnD
MaterialAppLời giải
Mở trang câu hỏi này →Widget cơ bản trong Material Design của Flutter là MaterialApp. MaterialApp là nơi chứa các widget khác và cung cấp các tính năng cơ bản như theme, navigation, và layout. Nó giống như một khung xương (skeleton) cho ứng dụng của bạn, giúp bạn xây dựng một ứng dụng có thiết kế thống nhất và dễ sử dụng. Khi bạn tạo một ứng dụng Flutter mới, MaterialApp thường là widget đầu tiên được tạo ra. Nó cho phép bạn thêm các widget khác như Scaffold, Container, Column,... để xây dựng giao diện người dùng của ứng dụng.
231Placeholder widget is used for?4 lựa chọn
AFinal UI
BTemporary UI
CAnimation
DRouting
Lời giải
Mở trang câu hỏi này →Widget thay thế (placeholder widget) được sử dụng để tạo ra giao diện tạm thời (Temporary UI) trong quá trình thiết kế hoặc phát triển ứng dụng. Nó cho phép các nhà phát triển tạo ra một giao diện tạm thời để sử dụng trong quá trình thử nghiệm hoặc phát triển, mà không cần phải tạo ra giao diện cuối cùng (Final UI). Widget thay thế thường được sử dụng để tạo ra các giao diện tạm thời cho các phần tử như văn bản, hình ảnh, nút bấm, v.v. Nó giúp các nhà phát triển có thể thử nghiệm và kiểm tra ứng dụng mà không cần phải tạo ra giao diện cuối cùng.
232Short pipeline from widget to screen?4 lựa chọn
AJavaScript bridge only
BWidget tree → Element + RenderObject (layout/paint) → compositing → GPU
CXML → Flutter
DGPU → Widget
Lời giải
Mở trang câu hỏi này →Một pipeline ngắn từ widget đến màn hình trong Flutter được mô tả như sau: Widget tree → Element + RenderObject (layout/paint) → compositing → GPU. Trong đó, Widget tree là cấu trúc cây widget được tạo ra từ các widget con. Element + RenderObject là lớp trung gian giữa widget và màn hình, chịu trách nhiệm thực hiện layout và paint. Compositing là quá trình kết hợp các phần tử màn hình thành một hình ảnh cuối cùng. Cuối cùng, GPU (Graphics Processing Unit) là bộ phận xử lý đồ họa của máy tính, chịu trách nhiệm hiển thị hình ảnh trên màn hình.
233What benefit does using a centralized theme provide?4 lựa chọn
ABetter state management
BFaster API calls
CConsistent UI appearance
DReduced widget rebuilds
Lời giải
Mở trang câu hỏi này →Sử dụng chủ đề trung tâm mang lại nhiều lợi ích cho ứng dụng của bạn. Một trong những lợi ích chính là tạo ra một giao diện người dùng (UI) nhất quán. Khi sử dụng chủ đề trung tâm, bạn có thể định nghĩa một bộ sưu tập các thành phần UI và màu sắc được sử dụng xuyên suốt ứng dụng. Điều này giúp tạo ra một trải nghiệm người dùng đồng nhất và dễ nhận biết. Ngoài ra, sử dụng chủ đề trung tâm cũng giúp giảm thiểu sự phức tạp trong việc quản lý UI và giảm thiểu thời gian phát triển.
234What does `Theme.of(context)` return (concept)?4 lựa chọn
AA route widget
BWeb only
C`ThemeData` (or data from a `Theme` ancestor) for colors/typography
DAlways null
Lời giải
Mở trang câu hỏi này →Trong Flutter, `Theme.of(context)` được sử dụng để truy cập thông tin về chủ đề (theme) của ứng dụng. Khi gọi hàm này, nó sẽ trả về dữ liệu về chủ đề, bao gồm cả màu sắc và typography. Dữ liệu này có thể được sử dụng để định dạng giao diện người dùng của ứng dụng. Nếu không có chủ đề nào được định nghĩa, hàm này sẽ trả về dữ liệu từ chủ đề cha (parent theme). Điều này cho phép bạn chia sẻ dữ liệu chủ đề giữa các widget khác nhau trong ứng dụng. Trong trường hợp không có chủ đề nào được định nghĩa, hàm này sẽ trả về giá trị null.
235What does Hot Reload do?4 lựa chọn
ARestarts app fully
BKeeps state and updates UI
CDeletes cache
DRebuilds APK
Lờ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 hoàn toàn. Khi bạn thực hiện Hot Reload, ứng dụng sẽ giữ lại trạng thái hiện tại và cập nhật giao diện người dùng (UI) để phản ánh những thay đổi mới. Điều này giúp bạn có thể nhanh chóng thử nghiệm và kiểm tra ứng dụng mà không cần phải chờ đợi thời gian khởi động lại. Hot Reload thường được sử dụng trong quá trình phát triển ứng dụng để giúp bạn có thể nhanh chóng thử nghiệm và kiểm tra ứng dụng mà không cần phải chờ đợi thời gian khởi động lại.
236What does StatelessWidget mean?4 lựa chọn
AHas mutable state
BCannot rebuild
CNo internal state
DUses setState
Lời giải
Mở trang câu hỏi này →StatelessWidget là một loại widget trong Flutter không có trạng thái thay đổi được. Nó không có phương thức setState và không thể thay đổi trạng thái của widget. Điều này có nghĩa là khi widget được xây dựng, trạng thái của nó sẽ không thay đổi cho đến khi widget được tái tạo lại. StatelessWidget thường được sử dụng khi bạn cần tạo ra một widget đơn giản không có trạng thái thay đổi được, chẳng hạn như một nút bấm hoặc một văn bản. Ví dụ, nếu bạn có một nút bấm và bạn muốn nó có thể được kích hoạt và không kích hoạt, bạn có thể sử dụng một biến boolean để lưu trữ trạng thái của nút bấm. Tuy nhiên, nếu bạn sử dụng một StatelessWidget, bạn sẽ không thể thay đổi trạng thái của nút bấm mà không tái tạo lại widget.
APerformance
BAbility to hold mutable state
CPlatform compatibility
DRendering engine
Lời giải
Mở trang câu hỏi này →StatelessWidget và StatefulWidget là hai loại widget cơ bản trong Flutter. Câu hỏi đặt ra là sự khác biệt chính giữa chúng là gì.
StatelessWidget là một widget không thể thay đổi trạng thái của nó. Khi widget được tạo, trạng thái của nó được xác định và không thể thay đổi sau đó.
Trong khi đó, StatefulWidget là một widget có thể thay đổi trạng thái của nó. Trạng thái của widget này có thể được thay đổi sau khi widget được tạo.
Sự khác biệt chính giữa hai loại widget này là khả năng giữ trạng thái. StatefulWidget có thể giữ trạng thái của nó, trong khi StatelessWidget không thể.
Điều này có nghĩa là nếu bạn cần tạo một widget có thể thay đổi trạng thái, thì bạn nên sử dụng StatefulWidget. Ngược lại, nếu bạn cần tạo một widget không thể thay đổi trạng thái, thì bạn nên sử dụng StatelessWidget.
AIt allows a single codebase to render UI using its own engine across different platforms.
BIt uniquely identifies the Form and allows access to its state for validation and saving.
CIt prevents unnecessary rebuilds of widgets that do not change during the app's lifecycle.
DIt ensures the UI avoids system intrusions like notches, status bars, and camera cutouts.
Lời giải
Mở trang câu hỏi này →Từ khóa `const` trong tối ưu hóa widget có mục đích ngăn chặn việc rebuild widget không cần thiết trong suốt vòng đời của ứng dụng. Điều này giúp cải thiện hiệu suất và giảm thiểu thời gian tải trang. Khi một widget không thay đổi, sử dụng `const` sẽ ngăn chặn việc rebuild widget đó, từ đó giúp giảm thiểu thời gian và tài nguyên hệ thống. Điều này đặc biệt quan trọng trong các ứng dụng có nhiều widget và giao diện phức tạp. Sử dụng `const` một cách hợp lý sẽ giúp cải thiện hiệu suất và trải nghiệm người dùng.
AIt manages the focus state of a specific widget, such as a text field, and handles keyboard events.
BIt allows a single child widget to be scrollable when it exceeds the screen's vertical or horizontal space.
CIt is called exactly once when the widget is inserted into the tree, used for one-time initialisation.
DIt creates a Future that completes after a specified duration, often used to simulate network latency.
Lời giải
Mở trang câu hỏi này →Mục đích của phương thức `initState()` trong một `StatefulWidget` là để thực hiện các hành động cần thiết khi widget được thêm vào cây widget. Phương thức này được gọi một lần duy nhất khi widget được thêm vào cây widget, và được sử dụng để thực hiện các hoạt động khởi tạo một lần. Ví dụ, bạn có thể sử dụng phương thức này để tải dữ liệu từ mạng, thực hiện các hành động cần thiết khi widget được thêm vào cây widget, hoặc thực hiện các hoạt động khác cần thiết cho widget. Phương thức `initState()` được gọi trước khi widget được render lần đầu tiên, và sau đó nó sẽ không được gọi lại khi widget được render lại.
240When is StatefulWidget used?4 lựa chọn
AUI never changes
BData changes over time
CStatic text only
DNo user input
Lời giải
Mở trang câu hỏi này →Khi nào thì sử dụng StatefulWidget? StatefulWidget là một loại widget trong Flutter được sử dụng khi trạng thái của widget thay đổi theo thời gian. Điều này có nghĩa là khi dữ liệu thay đổi, widget cũng sẽ thay đổi theo. Ví dụ, khi bạn nhập thông tin vào một form, trạng thái của form sẽ thay đổi và widget sẽ được cập nhật lại. StatefulWidget thường được sử dụng trong các trường hợp như: khi bạn cần cập nhật trạng thái của widget dựa trên dữ liệu từ mạng, khi bạn cần thực hiện các hành động khi trạng thái của widget thay đổi, v.v. Trong khi đó, khi trạng thái của widget không thay đổi theo thời gian, bạn nên sử dụng StatelessWidget để tối ưu hóa hiệu suất của ứng dụng.
241When prefer `StatelessWidget`?4 lựa chọn
AWhen you must use `GlobalKey`
BWhen you need `AnimationController` in State
CAlways
DUI depends only on parent args, no internal state that changes with interaction
Lời giải
Mở trang câu hỏi này →Khi nào nên sử dụng `StatelessWidget`? Đây là một loại widget không có trạng thái, không có khả năng thay đổi khi tương tác với người dùng. Vì vậy, nó phù hợp khi UI chỉ phụ thuộc vào các tham số từ cha mẹ widget và không có trạng thái nội bộ thay đổi khi tương tác. Ví dụ, một widget chỉ hiển thị một hình ảnh tĩnh không có khả năng thay đổi khi người dùng tương tác với nó. Trong trường hợp này, sử dụng `StatelessWidget` sẽ giúp tối ưu hóa hiệu suất ứng dụng vì nó không cần phải quản lý trạng thái và tái tạo lại widget khi cần thiết.
A
ColumnB
ScaffoldC
ContainerD
MaterialAppLời giải
Mở trang câu hỏi này →Trong Flutter, widget nào thường được sử dụng làm gốc của một ứng dụng? Để xây dựng một ứng dụng Flutter, bạn cần bắt đầu bằng một widget có thể chứa các widget khác. Trong các lựa chọn trên, MaterialApp là widget được sử dụng phổ biến nhất làm gốc của một ứng dụng Flutter. Nó cung cấp một cấu trúc cơ bản cho ứng dụng, bao gồm một màn hình chính và các widget con khác. MaterialApp cũng cung cấp các tính năng như menu, thanh trạng thái và các yếu tố khác để xây dựng một ứng dụng có giao diện người dùng thân thiện.
243Which widget is used to display a temporary message at the bottom of the screen that disappears after a few seconds?4 lựa chọn
A
ScaffoldB
runApp()C
main.dartD
SnackBarLời giải
Mở trang câu hỏi này →Widget được sử dụng để hiển thị một thông báo tạm thời ở dưới cùng của màn hình và tự động biến mất sau một vài giây là SnackBar. Để sử dụng SnackBar, bạn cần thêm một widget SnackBar vào trong một widget Scaffold. Sau đó, bạn có thể thêm một widget SnackBarAction để thực hiện một hành động khi người dùng nhấn vào SnackBar. Ví dụ, bạn có thể thêm một nút 'Xóa' để xóa một item khỏi danh sách.
244Which widget provides app structure?4 lựa chọn
A
ColumnB
RowC
ScaffoldD
CenterLời giải
Mở trang câu hỏi này →Trong thiết kế giao diện người dùng (UI) của ứng dụng di động, widget cung cấp cấu trúc cho ứng dụng được gọi là Scaffold. Scaffold là một widget cơ bản trong Flutter, giúp tạo ra một cấu trúc cơ bản cho ứng dụng, bao gồm các phần như AppBar, BottomNavigationBar, Drawer, và Body. Nó cung cấp một khung cơ bản để các widget khác được thêm vào, giúp tạo ra một giao diện người dùng hoàn chỉnh và dễ sử dụng. Ngoài ra, Scaffold cũng cung cấp các tính năng như hỗ trợ các widget con, quản lý trạng thái, và hỗ trợ các tính năng khác.