Tải bản đầy đủ (.pdf) (29 trang)

Lập trình ứng dụng di động đa nền tảng với flutter

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (285.63 KB, 29 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

LẬP TRÌNH ỨNG DỤNG DI ĐỘNG ĐA NỀN
TẢNG VỚI FLUTTER

Công ty thực tập: Lecle Vietnam
Người phụ trách: Tạ Phi Phụng
Thực tập sinh: Lê Hồng Phúc

TP. Hồ Chí Minh, tháng 12 năm 2022


LỜI MỞ ĐẦU
Ở thời điểm hiện tại, với tốc độ phát triển chóng mặt của khoa học và cơng nghệ hiện đại
thì ta càng thấy được mức độ phổ biến, cung như tiện dụng của những chiếc điện thoại thông
minh hiện nay là một điều không thể phủ nhận với hàng tỉ người dùng trên tồn thế giới. Và qua
đó thấy được ngành công nghiệp các ứng dụng dành cho các thiết bị di động ngày nay là việc
không thể thiếu với hơn 1.6 triệu ứng dụng trên App Store và hơn 3.5 triệu ứng dụng trên
Google Play Store (số liệu của quý 3/2022 theo Finbold thống kê) của hai ông lớn là Apple và
Google và sẽ còn tăng lên rất nhanh và nhiều trong tương lai. Và cũng như với tốc độ phát triển
nhanh chóng của cơng nghệ hiện đại ngày nay thì các ứng dụng ngày càng được trau chuốt hơn
cũng như ngày càng đẹp hơn để đáp ứng nhu cầu của người dùng.
Tuy nhiên với thời điểm trước đây để phát triển các ứng dụng cho hai nền tảng lớn đã thì
ta phải phát triển với hai module riêng biệt cho từng nền tảng, như vậy gây nên việc tốn kém rất
nhiều các chi phí để phát triển cũng như bảo trì. Và nhận ra được điều đó khái niệm về lập trình
đa nền tảng đã ra đời với khả năng phát triển các ứng dụng cho nhiều nền tảng khác nhau chỉ
với một source nguồn. Có nhiều frameworks đa nền tảng khác nhau như: Ionic, Xamarin, React
Native, Adobe Phonegap và gần đây nhất đó chính là Flutter của ơng lớn Google. Mặc dù là


một framework cịn khá mới mẻ tuy nhiên với sự hỗ trợ và phát triển từ Google khơng ai có thể
phủ nhận được sự phát triển nhanh chóng của framework này. Trên thế giới đã có rất nhiều các
lập trình viên đã đi theo framework này và với xu thế hội nhập thì các lập trình viên ở Việt Nam
cũng khơng phải là ngoại lệ, góp phần tất yếu cho việc hội nhập với những công nghệ và xu thế
mới trên thế giới cho các ứng dụng của Việt Nam.
Các ứng dụng được sinh ra để phục vụ cho các nhu cầu tất yếu khi sử dụng điện thoại
thông minh và không phân biệt lứa tuổi, bất kì ai cũng có thể sử dụng điện thoại thơng minh với
bất kì nền tảng nào mà họ thích như Android hay iOS và với các ứng dụng luôn được phát triển
phù hợp với lứa tuổi cũng như nhu cầu của họ, cũng như các ứng dụng này giờ đây có thể phát
triển được một cách nhanh chóng hơn với chỉ một source code duy nhất vô cùng tiện lợi. Và
nhận thấy được tiềm năng của ngành công nghiệp ứng dụng di động cũng như thế mạnh của
việc phát triển ứng dụng đa nền tảng, và đặc biệt thế mạnh của framework đa nền tảng mới là
1


Flutter em đã quyết định lựa chọn Flutter để làm định hướng cho con đường phát triển ứng dụng
di động của mình.
Sau hơn 3 năm học tập tại trường, em có mong muốn được trải nghiệm các cơng việc
thực tế, trau dồi nhiều kinh nghiệm có ích cho bản thân, và tham gia phát triển ứng dụng trong
một môi trường chuyên nghiệp, em đã thực hiện dự định đi thực tập của mình ở học kì 7. Và
cơng ty em đã chọn là Lecle Vietnam. Mặc dù đây là một cơng ty cịn khá mới tuy nhiên đây là
một cơng ty Hàn Quốc với môi trường trẻ trung, năng động và chuyên nghiệp, có thể giúp em
thực hiện được dự định này.

2


LỜI CẢM ƠN
Lời đầu tiên, em muốn được gửi lời cảm ơn chân thành đến công ty Lecle Vietnam đã
cho em có cơ hội được thực tập và trải nghiệm thực tế ở công ty.

Qua 3 tháng thực tập ở cơng ty với sự hướng dẫn nhiệt tình của các anh chị mentor và
trainer, sinh viên thực tập như chúng em đã có thể tiếp thu được những kiến thức quan trọng và
cần thiết cho quá trình phát triển ứng dụng di động cũng như các kiến thức nền tảng để làm việc
ở công ty và định hướng cho bản thân một cách chuyên nghiệp. Em rất biết ơn và em muốn gửi
lời cảm ơn sâu sắc đến các anh chị đã dành thời gian, cơng sức của mình để hướng dẫn, chỉ dạy
và giúp em có thể hồn thành được quá trình thực tập theo dự định của mình.
Em xin gửi lời cảm ơn đặc biệt đến anh Tạ Phi Phụng, người đã training Flutter chính
cho em cũng như hướng dẫn, giúp đỡ những khó khăn trong cơng việc cũng như vượt qua
những khó khăn trong việc làm quen với mơi trường làm việc mới và quy trình làm việc tại
công ty. Anh cũng là người hướng dẫn cho em tư duy khi làm việc và định hình quy trình làm
việc khi thực hiện dự án để em có thể làm việc thuận lợi và tránh sai sót hơn; cảm ơn anh
Huỳnh Bảo Quốc là người đã training cho em các kiến thức cần thiết mà em cần có cho công
việc như việc làm việc với backend như Restful API, Firebase, cũng như sử dụng các dịch vụ;
cảm ơn anh Nguyễn Phi Ân người đã hướng dẫn cách lập trình giao diện với Flutter và sử dụng
các package của nó làm sao để dự án được tốt hơn, cũng như sửa các lỗi sai trong khi lập trình
giao diện và xử lý các logic trong Flutter để giúp em cải thiện được các lỗi sai mình thường mắc
phải để em rút ra các kinh nghiệm và có thể lập trình giao diện trên Flutter được tốt hơn; em
cũng gửi lời cảm ơn đến anh Lâm Xuân Triết người đã chia sẻ và giúp em củng cố lại các kiến
thức cơ bản cần thiết để giúp em có thể áp dụng trong dự án; cảm ơn anh Vi Hữu Đức đã hướng
dẫn cho em hiểu hơn về git cũng như cách quản lý một source code; em xin cảm ơn các anh chị
thuộc team design, backend và QA/QC đã hướng dẫn và hỗ trợ em hoàn thành tốt dự án được
giao; và cuối cùng em xin gửi lời cảm ơn đến anh Nguyễn Mạnh Hùng là Project Manager của
mobile team và là người đã cho em thêm những kiến thức cần thiết mà em cần để giúp em có
thể bước trên con đường định hướng trở thành một Project Manager như anh trong tương lai. Và

3


với những đóng góp và chỉ dẫn của các anh chị thì em đã có thể hồn thành được một sản phẩm
và tham gia vào phát triển một module trong thời gian thực tập.

Em cũng xin gửi lời cảm ơn chân thành đến các thầy cô khoa Công nghệ phần mềm đã
nhiệt tình tạo điều kiện và hỗ trợ em được thực hiện báo cáo này.
Lê Hoàng Phúc
TP.HCM, 20/12/2022

4


NHẬN XÉT CỦA KHOA
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................

5



MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................................................ 1
LỜI CẢM ƠN ................................................................................................................................ 3
NHẬN XÉT CỦA KHOA ............................................................................................................. 5
MỤC LỤC ..................................................................................................................................... 6
Chương 1: Giới thiêu công ty thực tập .......................................................................................... 8
1. Giới thiệu công ty Lecle Vietnam .......................................................................................... 8
2. Sản phẩm công ty ................................................................................................................... 8
Chương 2: Nội dung thực tập ...................................................................................................... 10
1. Tìm hiểu công ty và các kỹ năng cơ bản của công ty .......................................................... 10
2. Nghiên cứu kỹ thuật ............................................................................................................. 11
2.1. Các cơng cụ làm việc ..................................................................................................... 11
2.2. Tìm hiểu ngơn ngữ Dart ................................................................................................ 11
2.3. Tìm hiểu kiến trúc tổ chức project của Flutter .............................................................. 13
2.4. Tìm hiểu Firebase và package trong Flutter .................................................................. 14
2.5. Lập trình ứng dụng với Flutter cho 2 nền tảng di động là Android và iOS .................. 16
3. Thực hiện project ................................................................................................................. 18
4. Lịch làm việc ........................................................................................................................ 18
Chương 3: Chi tiết về dự án ......................................................................................................... 23
1. Giới thiệu ứng dụng ............................................................................................................. 23

6


2. Thực hiện.............................................................................................................................. 23
3. Một số hình ảnh của ứng dụng ............................................................................................. 24
4. Kế hoạch ............................................................................................................................... 24
5. Kết quả ................................................................................................................................. 24
Chương 4: Tổng kết quá trình thực tập ........................................................................................ 25

1. Kết quả đạt được .................................................................................................................. 25
2. Những khó khăn gặp phải trong quá trình thực tập ............................................................. 25
3. Kinh nghiệm có được sau q trình thực tập ....................................................................... 25
TÀI LIỆU THAM KHẢO ........................................................................................................... 27
TỔNG KẾT .................................................................................................................................. 28

7


Chương 1: Giới thiêu công ty thực tập

1. Giới thiệu công ty Lecle Vietnam
Công ty Lecle được thành lập năm 2014 với trụ sở chính ở Hàn Quốc, và sau đó mở rộng
văn phịng sang thị trường Singapore và Mỹ, sau đó năm 2017 cơng ty quyết định thành lập một
văn phịng ở Việt Nam. Cơng ty có chun mơn về các lĩnh vực như Web, Blockchain, trước
đây là native app (Android, iOS) và sau này chuyển hướng sang Flutter. Sau 8 năm thành lập
công ty đã xây dựng được chỗ đứng vững chắc ở các thị trường Hàn Quốc, Mỹ, Singapore và
Việt Nam với các lĩnh vực về Blockchain với các khách hàng ở Mỹ và Singapore, khách hàng ở
Hàn Quốc và Việt Nam với các lĩnh vực như Web và Mobile.
Với văn phòng đặt tại 4 quốc gia và thị trường lớn hàng đầu là Mỹ, Hàn Quốc, Singapore
và Việt Nam, công ty gia công cũng như cung cấp các phần mềm cho các lĩnh vực như Web,
Block Chain, Mobile cho các quốc gia này với hơn 200 nhân viên đang làm việc tại các văn
phịng của cơng ty.
2. Sản phẩm công ty
Công ty Lecle cung cấp các ứng dụng Web và Mobile cho các khách hàng ở Hàn Quốc
và Việt Nam, ngồi ra cơng ty cịn có các dự án về mảng Blockchain cho các khách hàng ở Mỹ
và Singapore với nhiều khách hàng thân quen và đã hợp tác lâu dài với công ty. Công ty cũng đi
tiên phong trong việc chuyển đổi và cập nhật các cơng nghệ mới cho Blockchain và cũng như
trong đó có Flutter cho ứng dụng di động.


8


Nhờ những hợp tác với các khách hàng lâu năm cũng như với đội ngũ nhân lực tốt, công
ty đã có một số sản phẩm như hệ thống server riêng của công ty để tạo ra gitlab riêng của công
ty để quản lý source code, ngồi ra server cịn có thể sử dụng cho dự án của các khách hàng nếu
họ có nhu cầu. Ngồi ra cơng ty cũng đã từng gia công sản phẩm cho một số khách hàng lớn
như KPlaza, Unity, ...

9


Chương 2: Nội dung thực tập
Đợt thực tập này, sinh viên thực tập với chủ đề “Lập trình ứng dụng di động đa nền tảng
với Flutter” nhằm mục đích giúp sinh viên được đào tạo tồn diện về lập trình ứng dụng di động
đa nền tảng với Flutter, đồng thời rèn luyện kỹ năng làm việc nhóm, giao tiếp, quản lý thời gian,
cơng việc. Tại cơng ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong mơi
trường phát triển chun nghiệp và năng động.
1. Tìm hiểu công ty và các kỹ năng cơ bản của công ty
Thời gian: 1 ngày.
Nội dung:
- Giới thiệu về công ty, cách tổ chức của công ty cũng như một số thơng tin cần biết trong q
trình thực tập như việc quản lý source code, thông tin tài khoản, …
- Ngày đầu tiên đến công ty em đã được nghe các anh chị trong ban nhân sự trình bày về q
trình thành lập cũng như phát triển của cơng ty (như đã trình bày ở phần trên), đồng thời cũng
giới thiệu để nhân viên thực tập làm quen với toàn bộ các nhân viên của các team khác, thành
viên trong team hướng dẫn thực tập, cũng như ban lãnh đạo trong công ty để tạo sự gắn kết,
thân mật cũng như qua đó giới thiệu về quy trình làm việc từ cao đến thấp trong công ty, cách tổ
chức của cơng ty.
- Ngồi ra nhân viên thực tập cịn được giới thiệu qua về cách thức cũng như quy trình làm việc

của công ty như thời gian đi làm, các quy định công ty ban hành mà các nhân viên phải tn
thủ, cách sử dụng email trong cơng việc, ngồi ra cịn có các thơng tin về tài khoản của nhân
viên như email, gitlab, …
Kết quả:
- Hiểu thêm về công ty Lecle Vietnam, quá trình thành lập và phát triển, ngồi ra cịn được làm
quen với các nhân sự trong công ty, thành viên trong team hướng dẫn và ban lãnh đạo để tạo
được sự thân thiết và gắn kết giữa các nhân viên trong cơng ty. Và qua đó có thêm các kỹ năng
10


về việc quản lý email, tài khoản công việc cũng như thời gian làm việc, từ đó có thể làm việc có
kế hoạch, kỷ luật cũng như trách nhiệm và tuân thủ các điều lệ của công ty.
2. Nghiên cứu kỹ thuật
2.1. Các công cụ làm việc
Thời gian: 2 ngày.
Nội dung:
- Tìm hiểu các cơng cụ cần thiết và sẽ được sử dụng trong quá trình làm việc. Trong thời gian
làm quen đầu này thì supervisor đã hướng dẫn cho thực tập sinh tìm hiểu về các cơng cụ sẽ giúp
ích cho cơng việc khơng chỉ hiện tại mà cịn về sau này. Một số phần mềm trong đó như Slack –
dùng cho làm việc nhóm, Firebase Console – Một nơi vô cùng cần thiết để sử dụng các dịch vụ
của Firebase và quản lý các ứng dụng được đăng ký, Visual Studio Code và Android Studio –
hai công cụ lập trình vơ cùng phổ biến và tiện lợi cho việc lập trình Flutter và một số plugin cần
thiết cho các IDE này.
Thực hiện:
- Thực hành việc cài đặt môi trường, IDE và sử dụng các phần mềm đã nêu trên.
Kết quả:
- Thực tập sinh có thể thực hiện lập trình vơ cùng tiện lợi với những cơng cụ chun dụng cũng
như được cung cấp hồn tồn miễn phí và tiện lợi, các cơng cụ có thể dễ dàng kết nối với nhau,
so sánh việc sử dụng các IDE để qua đó có thể chọn được IDE thích hợp và làm việc lâu dài
hoặc tùy vào hoàn cảnh và yêu cầu cơng việc.

2.2. Tìm hiểu ngơn ngữ Dart
Thời gian: 3 ngày.
Nội dung:

11


- Thực tập sinh được training và nhắc lại về ngơn ngữ lập trình Dart với các kiến thức cơ bản
quan trọng để có thể sử dụng cho Flutter (Dart là ngơn ngữ cốt lõi trong Flutter).
- Lập trình hướng đối tượng: trainer nhắc lại và củng cố các kiến thức cơ bản về lập trình hướng
đối tượng như tính đóng gói, trừu tượng, kế thừa, đa hình. Ngồi ra thực tập sinh còn được chỉ
ra một số điểm khác biệt về OOP mà Dart dùng so với các ngôn ngữ khác.
- Lập trình bất đồng bộ: thực tập sinh được các trainer hướng dẫn phương pháp lập trình bất
đồng bộ trong Dart. Đây là một kỹ thuật được sử dụng rất nhiều và không thể thiếu trong Flutter
để xử lý các thao tác bất đồng bộ như tải file, đọc data từ database, … Ngồi ra thực tập sinh
cịn được giải thích rõ về cơ chế Isolate và Async trong lập trình bất đồng bộ để phân biệt và
dùng đúng lúc, đồng thời thấy được điểm mạnh, điểm yếu của chúng.
- Làm việc với API: các trainer của Flutter team hướng dẫn những cách để làm việc với API
thông qua Dart với các thư viện được Dart cung cấp cũng như thư viện từ pub.dev. Qua đó thực
tập sinh sẽ biết được cách gửi request đến API, nhận kết quả trả về hoặc đánh chặn dữ liệu để
xử lý (có thể dùng trong một số trường hộp debug hoặc xử lý data trước khi data được lưu trữ
lại, …).
- Null safety: các trainer hướng dẫn cho thực tập sinh kiến thức mới và vô cùng hay được
Flutter đưa vào trong thời gian gần đây lấy cảm hứng từ ngôn ngữ lập trình Kotlin đó là là null
safety, qua đó giúp các thực tập sinh hiểu được tầm quan trọng của nó trong việc giúp ta tránh
được các lỗi liên quan đến dữ liệu null trong lập trình. Nhờ vào điều đó sẽ giúp cho các thực tập
sinh tránh cũng như giảm thiểu được tối đa các rủi ro có thể gặp khi phát triển dự án cho hiện tại
và cả sau này.
- Giao tiếp giữa Dart và Native code: các trainer hướng dẫn cách để ngơn ngữ Dart có thể giao
tiếp với các ngơn ngữ cho lập trình native như Java, Kotlin (Android) hoặc Swift, Object-C

(iOS). Qua đó giúp cho các thực tập sinh có thể hiểu được cơ chế để ngơn ngữ Dart có thể gọi
và sử dụng code từ Native code cho Flutter project để hỗ trợ khi các thư viện của Flutter khơng
cung cấp được tính năng của Native code (VD: lấy version hiện tại của hệ điều hành, dạng thao
tác của điện thoại mà người dùng cài đặt (như 3 nút ấn, gesture, …), ...
12


Thực hiện:
- Tham gia đầy đủ các buổi training của công ty
- Thực hiện các bài thực hành để kiểm tra về kiến thức đã được training như tạo các class và sử
dụng các phần hướng đối tượng trong Dart theo yêu cầu của trainer, thực hiện việc gọi API đơn
giản từ API mẫu của công ty để xem kết quả và cấu trúc của API, tạo và thực hiện phương thức
tải ảnh về máy cho phần lập trình bất đồng bộ.
- Thực hiện việc gọi native code đơn giản để nắm được quy trình thao tác.
- Ngồi ra phải tìm hiểu thêm các tài liệu trên mạng để nắm rõ thêm các phần đã được hướng
dẫn.
Kết quả:
- Nâng cao kỹ năng lập trình cũng như kiến thức cần có về ngơn ngữ lập trình Dart.
- Có được những kiến thức quan trọng cho việc lập trình UI và xử lý các logic trong Flutter dựa
trên ngơn ngữ Dart.
2.3. Tìm hiểu kiến trúc tổ chức project của Flutter
Thời gian: 3 ngày.
Nội dung:
- Thực tập sinh được training về mơ hình mà cơng ty sử dụng cho project, tìm hiểu một số
design pattern, SOLID principle cũng như tìm hiểu các mơ hình phát triển dự án liên quan.
- Mơ hình phát triển ứng dụng: mơ hình được tìm hiểu là MVVM (Model – View –
ViewModel). Đây là một mơ hình phát triển ứng dụng vô cùng phổ biến hiện tại và được rất
nhiều công ty sử dụng trong các dự án của họ, thực tập sinh sẽ tìm hiểu các kiến thức căn bản về
mơ hình để có thể hiểu được mơ hình cũng như nắm bắt cấu trúc cơ bản của mơ hình này. Ngồi
ra thực tập sinh cịn được nghe sơ qua về các mơ hình như MVC hay MVP và các ưu, khuyết

điểm của chúng và hiểu được tại sao nên dùng mơ hình MVVM.
13


- Tìm hiểu cấu trúc chính được các trainer module dựa trên: tiến hành tìm hiểu kiến thức về kiến
thức trong bài viết liên quan nơi các trainer đã dựa trên để viết ra module code tái sử dụng cũng
như hướng dẫn cho các thực tập sinh hiện tại và sau này. Đây là bài viết cung cấp kiến thức đầy
đủ cũng như tổng quan về mơ hình mà các trainer sử dụng để giúp các thực tập sinh hình dung
phần nào cấu trúc được sử dụng trong project module.
- Tìm hiểu về SOLID principle: thực tập sinh được yêu cầu tìm hiểu các quy ước trong SOLID
để qua đó hiểu rõ được tẩm quan trọng của việc có các quy ước khi viết code cho bản thân để
giúp cho thực tập sinh chủ động hoàn thiện bản thân hơn và cải thiện được kỹ năng giúp code
clean và module hơn trong tương lai.
- Tìm hiểu về project module: thực tập sinh được các trainer hướng dẫn sâu hơn về cấu trúc tổ
chức đã được viết ra thành project module. Các trainer hướng dẫn từng phần là các class đại
diện cho từng lớp theo mơ hình MVVM để biết được chức năng của từng class này cũng như
nếu sử dụng chúng sẽ giúp ích gì cho việc quản lý source code trong dự án.
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty.
- Thực hành, hỏi đáp các trainer để làm rõ các kiến thức đã được training.
- Tìm hiểu thêm các kiến thức trên mạng để củng cố và bổ sung các kiến thức cần thiết.
Kết quả:
- Nâng cao khả năng tổ chức project.
- Bổ sung các kiến thức quan trọng về các design pattern.
- Biết được các quy tắc viết code sao cho dễ đọc, dễ hiểu và dễ quản lý không chỉ cho các
developer hiện tại mà còn những người developer khác gia nhập vào dự án sau.
2.4. Tìm hiểu Firebase và package trong Flutter
Thời gian: 3 ngày.
14



Nội dung:
- Thực tập sinh được trainer trong Flutter team hướng dẫn tìm hiểu cách sử dụng Firebase
console và sử dụng các dịch vụ của nó, đồng thời tìm hiểu các đăng ký ứng dụng lên Firebase,
tìm hiểu nơi để nghiên cứu và tìm các package cần thiết cho dự án.
- Sử dụng Firebase Console: Trainer hướng dẫn cho thực tập sinh tìm hiểu về Firebase một hệ
quản trị cho phần backend được cung cấp bởi Google và được sử dùng trong các dự án được
công ty cũng như nhiều cơng ty khác trên thế giới. Qua đó thực tập sinh có thể biết cách đăng
ký tài khoản, tạo cho mình những project và quản lý chúng cũng như tích hợp cách dịch vụ
được Firebase cung cấp cho dự án. Đồng thời thực tập sinh được gợi ý những nơi có thể tìm tài
liệu như Medium hay document của Firebase để qua đó có thể chủ động tìm các tài liệu cần
thiết trong quá trình thực hiện dự án.
- Sử dụng các package cho dự án: Các package này được Flutter cung cấp trên trang pub.dev,
đây là trang web mà developer Flutter sẽ ghé thăm rất thường xuyên để có thể tìm cho mình
những package được đóng góp từ Flutter team của Google cũng như cộng đồng các developer
trên toàn thế giới. Qua đó giúp các thực tập sinh biết được nơi cũng như cách tìm ra các thư
viện hỗ trợ cho các tính năng mà hiện tại Flutter chưa cung cấp. Và các thực tập sinh cũng được
tìm hiểu thêm các thao tác để thêm package cũng như quản lý các package của dự án như việc
quản lý version, override version, chọn version phù hợp và update version cho package.
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành kiểm tra kiến thức đã học như tiến hành tạo dự án và đăng ký thử ứng
dụng, thêm cho project một số dịch của Firebase thường dùng như Firebase Cloud Messaging,
Social Login thông qua hướng dẫn từ các package từ pub.dev.
- Ngoài ra thực tập sinh cần tìm hiểu thêm các kiến thức trên mạng để có thể nắm đầy đủ cũng
như bổ sung thêm những kiến thức chưa hiểu.
Kết quả:
15



- Biết được cách làm việc cơ bản với Firebase cũng như liên kết với các dịch vụ của Firebase
vào dự án thông qua các package được Flutter cung cấp thông qua pub.dev.
- Biết cách sử dụng cũng như quản lý các package trong một project.
2.5. Lập trình ứng dụng với Flutter cho 2 nền tảng di động là Android và iOS
Thời gian: 3 ngày.
Nội dung:
- Tìm hiểu cách Flutter xây dựng ứng dụng cho 2 nền tảng là Android và iOS cũng như cách
Flutter tối ưu code cho 2 nền tảng và cơ chế hoạt động của Flutter trên 2 nền tảng này.
- Định nghĩa về Flutter: Flutter là bộ cơng cụ của Google lập trình giao diện của Google dựa
trên ngơn ngữ lập trình Dart để xây dựng các ứng dụng với giao diện đẹp, ứng dụng được biên
dịch thành code native các nền tảng của các thiết bị như mobile, web, desktop và embedded với
chỉ duy nhất một source code vớ khẩu hiệu là “Build once, deploy everywhere”. (Nguồn:
flutter.dev)
- Định nghĩa về Android: Android là một tập hợp phần mềm (software stack) dành cho các thiết
bị di động, bao gồm hệ điều hành, phần mềm trung gian (middleware)và các ứng dụng chủ chốt
(key applications). Google Inc. đã mua lại phát triển ban đầu của phần mềm từ Android Inc.,
năm 2005. Android là hệ điều hành di động dựa trên phiên bản sửa đổi của nhân Linux và phần
mềm mã nguồn mở khác, được thiết kế chủ yếu cho các thiết bị di động màn hình cảm ứng như
điện thoại thơng minh và máy tính bảng. Android được phát triển bởi một nhóm các nhà phát
triển được gọi là Open Handset Alliance và được Google tài trợ về mặt thương mại. (Nguồn:
Wikipedia)
- Định nghĩa về iOS: iOS (trước đây là iPhone OS) là hệ điều hành trên các thiết bị di động của
Apple. Đây là hệ điều hành chạy trên các sản phẩm iPhone, iPad, và iPod Touch và là hệ điều
hành phổ biến thứ 2 trên toàn cầu, sau Android của Google. Ban đầu hệ điều hành này chỉ được
phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng sau đó được mở rộng để chạy trên các

16


thiết bị khác của Apple như iPod Touch (tháng 9 năm 2007) và máy tính bảng iPad (tháng 1

năm 2010). (Nguồn: Wikipedia)
- Tạo ứng dụng Flutter: thực tập sinh được các trainer nhắc lại cách tạo một ứng dụng Flutter cơ
bản, cách sử dụng các công cụ biên dịch, chạy ứng dụng Flutter trên máy ảo Android, iOS và
trên cả thiết bị thực tế của hai nền tảng Android và iOS cũng như việc debug và build ứng dụng
thông qua Wifi.
- Tối ưu code 2 nền tảng Android và iOS: do Flutter cung cấp UI theo dạng Widget và các
Widget được sắp xếp trong ứng dụng theo dạng cây với việc nếu một Widget cha được build lại
thì các Widget con của nó cũng sẽ như vậy nên các trainer đã hướng dẫn cách để thực tập sinh
có thể giảm thiểu được việc phải build lại quá nhiều Widget thông qua việc quản lý state của
các Widget sao cho hiệu quả, qua đó có thể tối ưu được phần mềm trên hai nền tảng để tạo ra
trải nghiệm tốt nhất cho người dùng cũng như tiết kiệm được nhiều thời gian của nhà phát triển.
- Cơ chế hoạt động của Flutter trên 2 nền tảng này: Trainer giải thích cho thực tập sinh thêm về
cơ chế mà Flutter vẽ giao diện mà developer lập trình lên hai nền tảng Android và iOS đó là
thơng qua canvas qua đó Flutter có thể tùy biến để vẽ giao diện theo ý muốn, qua đó cung cấp
được các Widget vơ cùng đẹp và bắt mắt cho các developer cũng như người dùng. Flutter sử
dụng công cụ để vẽ giao diện trên hai nền tảng này là dựa vào Skia khá mạnh một render engine
của C++. (Nguồn: flutter.dev)
- Lập trình ứng dụng cho 2 nền tảng Android và iOS sử dụng Flutter: Để lập trình Flutter có
hiệu suất cao thì các lập trình viên phải cố gắng để có thể tối ưu được số lượng widget, cũng
như cố gắng module lại những thứ sẽ có thể dùng nhiều trong dự án như màu sắc, font chữ… Vì
vậy trước khi tiến hành dự án thực tập sinh được các trainer yêu cầu chuẩn bị những thứ có thể
tái sử dụng trong dự án cũng như giảm thiểu lượng code xuống tối đa. Khi đó ứng dụng sẽ trở
nền module hơn với việc code có thể được tái sử dụng ở nhiều nơi sau này cũng như thuận tiện
cho việc quản lý và sửa lỗi.
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty.
17


- Tạo ra những ứng dụng từ Flutter cho 2 nền tảng với các kiến thức được củng cố chuyên sâu

hơn về 2 nền tảng native là Android và iOS.
- Tìm hiểu thêm các kiến thức trên mạng để nắm rõ hơn các kiến thức đã được hướng dẫn.
Kết quả:
- Có thể hiểu rõ hơn cách thức Flutter hoạt động trên 2 nền tảng native di động là Android và
iOS qua đó triển khai ứng dụng Flutter được tốt hơn cho 2 nền tảng với các kiến thức đã được
hướng dẫn (giúp dự án hoạt động tốt với các dòng điện thoại khác nhau của 2 nền tảng).
3. Thực hiện project
Sau khoảng một tháng được training và thực hành, thực tập sinh đã nắm được những
kiến thức cơ bản về Flutter, Firebase, Flutter package and widgets. Trong tháng thứ hai và thứ
ba, trainer đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project
e-commerce app đa nền tảng là Android và iOS dựa trên Flutter. Chi tiết đồ án sẽ được nói ở
phần sau.
4. Lịch làm việc
Tuần

Cơng việc

Người hướng Mức
dẫn

1

độ Nhận

hồn thành

xét

của


người

hướng dẫn

- Làm quen với các nhân Anh Tạ Phi 100%

Sinh viên hồ đồng, tiếp

viên của cơng ty, cách tổ Phụng

thu quy trình nhanh.

chức, quy trình làm việc ở
cơng ty.
- Làm quen với các công
cụ làm việc của công ty.
- Học cách trao đổi, làm
việc qua email và các tài
khoản công ty cung cấp
18


(quản lý source code, xin
phép, …).
2

- Ôn tập lại cũng như bổ Anh Tạ Phi 100%

Nắm đủ kiến thức cơ bản.


sung thêm những kiến Phụng

Sinh viên được thực hành

thức cần thiết và quan

lại kiến thức đã có, cũng

trọng về ngơn ngữ Dart

như được góp ý để cải

(lập trình bất đồng bộ,

thiện cách làm được tốt

thao tác API, …)

hơn.

- Thực hành kiến thức đã
được hướng dẫn và củng
cố.
- Làm bài test nhỏ về các
kiến thức đã được hướng
dẫn.
3

- Tìm hiểu về Firebase và Anh Tạ Phi 100%


Sinh viên hoàn thành đầy

các dịch vụ của nó.

đủ các yêu cầu và củng

- Củng cố cũng như bổ
sung các kiến thức về các
IDE để lập trình Flutter.

Phụng

cố thêm các kiến thức
chun mơn thực tiễn
khác.

- Tìm hiểu và củng cố về
package trong Flutter từ
nơi tìm đến việc quản lý
ứng dụng các package vào
dự án.
- Tìm hiểu các mơ hình
phát triển dự án và các
19



×