{"id":55679,"date":"2023-06-03T10:08:17","date_gmt":"2023-06-03T03:08:17","guid":{"rendered":"https:\/\/jobsgo.vn\/blog\/?p=55679"},"modified":"2024-11-01T09:49:37","modified_gmt":"2024-11-01T02:49:37","slug":"nhung-cau-hoi-phong-van-flutter","status":"publish","type":"post","link":"https:\/\/jobsgo.vn\/blog\/nhung-cau-hoi-phong-van-flutter\/","title":{"rendered":"Nh\u1eefng c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Flutter th\u01b0\u1eddng g\u1eb7p d\u00e0nh cho \u1ee9ng vi\u00ean"},"content":{"rendered":"\n
N\u1ebfu b\u1ea1n \u0111ang quan t\u00e2m \u0111\u1ebfn v\u1ecb tr\u00ed Flutter v\u00e0 chu\u1ea9n b\u1ecb \u1ee9ng tuy\u1ec3n trong doanh nghi\u1ec7p n\u00e0o \u0111\u00f3 th\u00ec ch\u1eafc ch\u1eafn kh\u00f4ng th\u1ec3 b\u1ecf qua <\/em>nh\u1eefng c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Flutter<\/em><\/strong><\/a> th\u01b0\u1eddng g\u1eb7p nh\u1ea5t d\u01b0\u1edbi \u0111\u00e2y. B\u1ea1n h\u00e3y c\u00f9ng JobsGO t\u00ecm hi\u1ec3u ngay nh\u00e9.<\/em><\/p>\n M\u1ee5c l\u1ee5c<\/p> G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Flutter<\/strong><\/a> \u0111\u01b0\u1ee3c bi\u1ebft l\u00e0 SDK m\u00e3 ngu\u1ed3n m\u1edf d\u00e0nh ph\u1ee5c v\u1ee5 vi\u1ec7c ph\u00e1t tri\u1ec3n \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng. N\u00f3 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh b\u1edfi Google v\u00e0 vi\u1ebft b\u1eb1ng ng\u00f4n ng\u1eef C++. Th\u1ef1c t\u1ebf, Flutter giao ti\u1ebfp v\u1edbi SDK c\u1ee7a n\u1ec1n t\u1ea3ng mobile Android, IOS \u0111\u1ec3 t\u1ea1o n\u00ean Flutter Engine ho\u00e0n ch\u1ec9nh h\u01a1n.<\/p><\/blockquote>\n Flutter c\u00f3 nh\u1eefng th\u00e0nh ph\u1ea7n ch\u00ednh nh\u01b0 sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Dart l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng. N\u00f3 ra \u0111\u1eddi nh\u1eb1m t\u1ed1i \u01b0u h\u00f3a client cho c\u00e1c n\u1ec1n t\u1ea3ng nh\u01b0: Desktop, web, server.<\/p>\n Google cho ph\u00e9p s\u1eed d\u1ee5ng Dart l\u00e0 v\u00ec n\u00f3 cung c\u1ea5p c\u00e1c l\u1ef1a ch\u1ecdn hi\u1ec7n \u0111\u1ea1i, ti\u00ean ti\u1ebfn h\u01a1n c\u00e1c ng\u00f4n ng\u1eef k\u1ecbch b\u1ea3n \u1edf n\u1ec1n t\u1ea3ng web. Kh\u00f4ng ch\u1ec9 v\u1eady, n\u00f3 c\u00f2n \u0111em l\u1ea1i hi\u1ec7u qu\u1ea3, kh\u1ea3 n\u0103ng b\u1ea3o v\u1ec7 th\u00f4ng tin cao.<\/p>\n Xem th\u00eam: Top 35+ c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Java<\/a> ph\u1ed5 bi\u1ebfn nh\u1ea5t b\u1ea1n n\u00ean tham kh\u1ea3o<\/strong><\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Dart bao g\u1ed3m nh\u1eefng ki\u1ec3u d\u1eef li\u1ec7u sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Theo ki\u1ebfn th\u1ee9c m\u00e0 t\u00f4i c\u00f3 \u0111\u01b0\u1ee3c, 3 ki\u1ec3u khai b\u00e1o Dynamic, Var v\u00e0 Final kh\u00e1c nhau nh\u01b0 sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Stateless Widget \u0111\u01b0\u1ee3c bi\u1ebft l\u00e0 Widget t\u0129nh, n\u00f3 kh\u00f4ng t\u1ef1 thay \u0111\u1ed5i \u0111\u01b0\u1ee3c c\u00e1i m\u00e0 n\u00f3 hi\u1ec3n th\u1ecb sau khi \u0111\u00e3 render xong. Hi\u1ec3u theo c\u00e1c kh\u00e1c th\u00ec Stateful Widget kh\u00f4ng ch\u1ee9a bi\u1ebfn sate cho qu\u1ea3n l\u00fd tr\u1ea1ng th\u00e1i UI.<\/p>\n C\u00f2n Stateful Widget l\u1ea1i l\u00e0 m\u1ed9t Widget \u0111\u1ed9ng, n\u00f3 ch\u1ee9a state v\u00e0 ch\u1ee7 \u0111\u1ed9ng render khi state thay \u0111\u1ed5i.<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Stateful Widget s\u1ebd c\u00f3 7 tr\u1ea1ng th\u00e1i sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Hot Reload, Hot Restart v\u00e0 Full Restart trong Flutter kh\u00e1c nhau nh\u01b0 sau:<\/p>\n Xem th\u00eam: 20+ c\u00e2u h\u1ecfi v\u1ec1 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u ph\u1ecfng v\u1ea5n<\/a> v\u00e0 g\u1ee3i \u00fd tr\u1ea3 l\u1eddi<\/strong><\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Stream ch\u00ednh l\u00e0 lu\u1ed3ng data b\u1ea5t \u0111\u1ed9ng b\u1ed9 d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o v\u00e0 d\u1eef li\u1ec7u \u0111\u1ea7u ra c\u00f9ng c\u00e1c x\u1eed l\u00fd thao t\u00e1c b\u00ean trong n\u00f3. \u0110\u1ec3 l\u1ea5y \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u v\u00e0o stream th\u00ec s\u1eed d\u1ee5ng thu\u1ed9c t\u00ednh sink, \u0111\u1ed3ng th\u1eddi publish s\u1ebd gi\u00fap \u0111\u01b0a gi\u1eef li\u1ec7u ra ngo\u00e0i.<\/p>\n C\u00f3 2 lo\u1ea1i stream \u0111\u00f3 l\u00e0:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n \u0110\u1ec3 \u0111i\u1ec1u h\u01b0\u1edbng m\u00e0n h\u00ecnh trong Flutter s\u1ebd c\u00f3 3 c\u00e1ch nh\u01b0 sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Block l\u00e0 m\u1ed9t Pattern \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 qu\u1ea3n l\u00fd state \u0111\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t b\u1edfi Google developer d\u00e0nh cho \u1ee9ng vi\u00ean s\u1eed d\u1ee5ng Flutter. Block c\u00f3 kh\u00e1 nhi\u1ec1u \u0111i\u1ec3m gi\u1ed1ng nhau v\u1edbi 2 Patterns l\u00e0 MVP v\u00e0 MVVM. M\u1ee5c \u0111\u00edch c\u1ee7a n\u00f3 ch\u00ednh l\u00e0 t\u00e1ch ph\u1ea7n source code business logic ra kh\u1ecfi UI.<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Hi\u1ec3u \u0111\u01a1n gi\u1ea3n nh\u1ea5t th\u00ec Widget ch\u00ednh l\u00e0 th\u00e0nh ph\u1ea7n c\u00f3 li\u00ean quan \u0111\u1ebfn giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng, c\u00e1i m\u00e0 h\u1ecd nh\u00ecn th\u1ea5y tr\u00ean m\u00e0n h\u00ecnh. Hi\u1ec7n nay c\u00f3 2 lo\u1ea1i Widget \u0111\u00f3 l\u00e0:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n State l\u00e0 m\u1ed9t b\u1ed9 bi\u1ebfn c\u00f3 ch\u1ee9a c\u00e1c gi\u00e1 tr\u1ecb, thu\u1ed9c t\u00ednh c\u1ee7a m\u1ed9t widget. C\u00f2n Setstate l\u00e0 m\u1ed9t c\u00e1ch \u0111\u1ec3 ch\u00fang ta \u0111\u01b0a ra y\u00eau c\u1ea7u refresh ho\u1eb7c l\u00e0 rebuild m\u00e0n h\u00ecnh \u1ee9ng d\u1ee5ng v\u1edbi gi\u00e1 tr\u1ecb, thu\u1ed9c t\u00ednh m\u1edbi.<\/p>\n SetState c\u00f3 c\u00f4ng d\u1ee5ng l\u00e0 thay \u0111\u1ed5i widget, v\u00ec State object \u0111\u01b0\u1ee3c t\u1ea1o ra b\u1edfi framework.<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Ch\u1ebf \u0111\u1ed9 build c\u1ee7a Flutter c\u00f3 3 ch\u1ebf \u0111\u1ed9 nh\u01b0 sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n B\u00ean trong Dart Function c\u00f3 2 ki\u1ec3u tham s\u1ed1 l\u00e0 b\u1eaft bu\u1ed9c v\u00e0 kh\u00f4ng b\u1eaft bu\u1ed9c. Trong \u0111\u00f3, tham s\u1ed1 kh\u00f4ng b\u1eaft thu\u1ed9c th\u01b0\u1eddng th\u00ec kh\u00f4ng c\u1ea7n gi\u00e1 tr\u1ecb khi ch\u00fang ta g\u1ecdi h\u00e0m v\u00e0 \u0111\u01b0\u1ee3c khai b\u00e1o ngay sau tham s\u1ed1 b\u1eaft bu\u1ed9c. N\u00f3 c\u0169ng s\u1ebd c\u00f3 gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh cho tham s\u1ed1 kh\u00f4ng b\u1eaft bu\u1ed9c.<\/p>\n Xem th\u00eam: T\u1ed5ng h\u1ee3p c\u00e1c c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Front End<\/a> d\u00e0nh cho Intern<\/strong><\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Flutter c\u00f3 nh\u1eefng l\u1ee3i \u00edch c\u1ee5 th\u1ec3 nh\u01b0 sau:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Async v\u00e0 Await l\u00e0 t\u1eeb kh\u00f3a cung c\u1ea5p c\u00e1ch khai b\u00e1o m\u1ed9t ch\u01b0\u01a1ng tr\u00ecnh b\u1ea5t \u0111\u1ed9ng b\u1ed9. C\u1ee5 th\u1ec3:<\/p>\n G\u1ee3i \u00fd tr\u1ea3 l\u1eddi:<\/strong><\/p>\n Nh\u01b0 v\u1eady, n\u1ed9i dung tr\u00ean \u0111\u00e2y JobsGO<\/a><\/strong> \u0111\u00e3 gi\u00fap b\u1ea1n t\u00ecm hi\u1ec3u xong nh\u1eefng c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Flutter<\/strong> k\u00e8m g\u1ee3i \u00fd tr\u1ea3 l\u1eddi. Mong r\u1eb1ng v\u1edbi 17 c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p n\u00e0y s\u1ebd gi\u00fap b\u1ea1n c\u00f3 cu\u1ed9c ph\u1ecfng v\u1ea5n t\u1ed1t nh\u1ea5t.<\/p>\nC\u00e2u 1: Flutter l\u00e0 g\u00ec<\/a>? Flutter c\u00f3 nh\u1eefng th\u00e0nh ph\u1ea7n ch\u00ednh n\u00e0o?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 2: Dart l\u00e0 g\u00ec? L\u00fd do g\u00ec khi\u1ebfn Google cho ph\u00e9p s\u1eed d\u1ee5ng Dart cho Flutter?<\/strong><\/span><\/h2>\n
C\u00e2u 3: Dart c\u00f3 nh\u1eefng ki\u1ec3u h\u1ed7 tr\u1ee3 d\u1eef li\u1ec7u n\u00e0o?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 4: Theo b\u1ea1n, ba ki\u1ec3u khai b\u00e1o Dynamic, Var v\u00e0 Final c\u00f3 g\u00ec kh\u00e1c nhau?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 5: B\u1ea1n h\u00e3y ph\u00e2n bi\u1ec7t Ph\u00e2n bi\u1ec7t Stateful Widget v\u00e0 Stateless Widget?<\/strong><\/span><\/h2>\n
C\u00e2u 6: B\u1ea1n bi\u1ebft g\u00ec v\u1ec1 v\u00f2ng \u0111\u1eddi c\u1ee7a v\u00f2ng \u0111\u1eddi c\u1ee7a m\u1ed9t Stateful Widget?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 7: B\u1ea1n h\u00e3y ph\u00e2n bi\u1ec7t c\u00e1c thu\u1eadt ng\u1eef Hot Reload, Hot Restart v\u00e0 Full Restart trong Flutter?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 8: Theo b\u1ea1n Stream trong Flutter l\u00e0 g\u00ec?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 9: B\u1ea1n h\u00e3y cho bi\u1ebft c\u00e1ch \u0111i\u1ec1u h\u01b0\u1edbng m\u00e0n h\u00ecnh trong Flutter?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 10: B\u1ea1n h\u00e3y gi\u1ea3i th\u00edch v\u1ec1 Block Pattern?<\/strong><\/span><\/h2>\n
C\u00e2u 11: Theo b\u1ea1n Widget l\u00e0 g\u00ec? C\u00f3 m\u1ea5y lo\u1ea1i widget?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 12: Theo b\u1ea1n State ngh\u0129a l\u00e0 g\u00ec? C\u00f4ng d\u1ee5ng c\u1ee7a setState?<\/strong><\/span><\/h2>\n
C\u00e2u 13: C\u00e1c ch\u1ebf \u0111\u1ed9 build c\u1ee7a Flutter l\u00e0 g\u00ec?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 14: C\u00e1c ki\u1ec3u tham s\u1ed1 b\u00ean trong Dart Function l\u00e0 g\u00ec?<\/strong><\/span><\/h2>\n
C\u00e2u 15: Theo b\u1ea1n Flutter c\u00f3 l\u1ee3i \u00edch g\u00ec?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 16: Theo b\u1ea1n, Async v\u00e0 Await l\u00e0 g\u00ec?<\/strong><\/span><\/h2>\n
\n
C\u00e2u 17: B\u1ea1n h\u00e3y ph\u00e2n bi\u1ec7t Async v\u00e0 Async*?<\/strong><\/span><\/h2>\n
\n