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

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

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 (851.51 KB, 26 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
MOBILE DEVELOPER

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: Nguyễn Mạnh Hùng
Thực tập sinh: Lê Hải Phong

TP. Hồ Chí Minh, tháng 06 năm 2023


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ì 6. 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 Nguyễn Mạnh Hù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 Tạ Phi
Phụng 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à với những
3


đó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ê Hải Phong
TP.HCM, 15/06/2023

4


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

5



MỤC LỤC
CHƯƠNG 1:

GIỚI THIỆU CÔNG TY THỰC TẬP ........................................................................ 7

1.1.

Giới thiệu công ty Lecle ................................................................................................................ 7

1.2.

Sản phẩm công ty .......................................................................................................................... 7

1.3.

Lịch làm việc tại công ty ............................................................................................................... 8

CHƯƠNG 2:

NỘI DUNG THỰC TẬP ............................................................................................ 12

2.1.

Tìm hiểu cơng ty và các kỹ năng cơ bản của công ty............................................................... 12

2.2.

Nghiên cứu kỹ thuật ................................................................................................................... 13


2.2.1.

Các cơng cụ làm việc ................................................................................................................ 13

2.2.2.

Tìm hiểu ngơn ngữ Dart ........................................................................................................... 13

2.2.3.

Tìm hiểu kiến trúc project của Flutter ...................................................................................... 15

2.2.4.

Tìm hiểu Firebase và package trong Flutter ............................................................................. 16

2.2.5.

Lập trình ứng dụng Flutter cho 2 nền tảng di động là Android và iOS .................................... 18

2.3.

Tham gia dự án thực tế .............................................................................................................. 20

2.3.1.

Giới thiệu ứng dụng .................................................................................................................. 20

2.3.2.


Thực hiện .................................................................................................................................. 20

2.3.3.

Một số hình ảnh của ứng dụng ................................................................................................. 21

2.3.4.

Kế hoạch ................................................................................................................................... 21

2.3.5.

Kết quả ...................................................................................................................................... 21

CHƯƠNG 3:

TỔNG KẾT ................................................................................................................. 22

3.1.

Điểm mạnh .................................................................................................................................. 22

3.2.

Điểm yếu ...................................................................................................................................... 22

3.3.

Chuẩn đạt được........................................................................................................................... 23


TÀI LIỆU THAM KHẢO ...................................................................................................................... 24
TỔNG KẾT ............................................................................................................................................. 25
6


CHƯƠNG 1:
1.1.

GIỚI THIỆU CƠNG TY THỰC TẬP

Giới thiệu cơng ty Lecle

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.

1.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.
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
7


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, ...

1.3.
Tuần

Lịch làm việc tại công ty
Công việc

Người

hướng Mức

dẫn
1

- Làm quen với các nhân Anh

độ Nhận xét của người hướng

hồn thành

Tạ

Phi 100%

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

dẫn
Sinh viên hồ đồng, tiếp
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
(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 thức Phụng


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

cần thiết và quan trọng về

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

ngơn ngữ Dart (lập trình

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

bất đồng bộ, thao tác API,

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

…)

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
8


kiến thức đã được hướng
dẫn.
3


- Tìm hiểu về Firebase và Anh
các dịch vụ của nó.

Tạ

Phi 100%

Phụng

Sinh viên hồn thành đầy
đủ các yêu cầu và củng cố
thêm các kiến thức chuyên

- Củng cố cũng như bổ

môn thực tiễn khác.

sung các kiến thức về các
IDE để lập trình Flutter.
- 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
design pattern trong lập
trình.
- Tìm hiểu, và hỏi đáp về
cấu trúc tổ chức project mà

công ty đang áp dụng dựa
trên các.
- Tiến hành tạo project và
tổ chức thử theo mơ hình
đã được hướng dẫn.
4

- Tìm hiểu về RESTful API Anh
và Postman.
- Áp dụng những kiến thức

Phụng

Tạ

Phi 100%

Sinh viên biết cách nghiên
cứu kiến thức mới và áp
dụng vào thực tế.

về API thực hiện một số
9


ứng dụng cơ bản.
5

- Lên kế hoạch thực hiện Anh
dự án được giao.


Tạ

Phi 100%

Phụng

Sinh viên biết cách vận
dụng các kiến thức đã học.
Nền tảng để tự học hỏi

- Viết các Widget tái sử

thêm sau này.

dụng cũng như module
code.
- Tạo các lớp cơ bản cần
thiết theo mơ hình tổ chức
dự án đã được hướng dẫn.
- Tìm hiểu thêm các kiến
thức về mơ hình và design
pattern.
6-9

Giai đoạn 1:

Anh

- Tiến hành tạo giao diện

cho

ứng

dụng

Hurry

Hungry theo design và mơ
hình đã tìm hiểu.

Phụng

Tạ

Phi 100%

Áp dụng và cải thiện các
phương pháp lập trình sẵn
có và được hướng dẫn
thêm. Sinh viên dần hình
thành thói quen và cách
làm việc riêng.

- Tiến hành liên kết project
với Firebase và thêm các
dịch vụ của nó vào dự án.
- Test thử các dịch vụ sau
khi đã thêm.
- Sửa các lỗi về logic và

test case của tester và
leader phản hồi.
- Sửa lỗi về giao diện sau
10


khi designer kiểm tra.
10 - 11

Giai đoạn 2:
- Thực hiện tích hợp API

Anh

Tạ

Phi 100%

Phụng

Sinh viên biết cách vận
dụng các kiến thức đã học.
Nền tảng để tự học hỏi

để lấy thông tin và hiển thị

thêm sau này.

thông tin tương ứng.
- Sửa các lỗi về logic và

test case của tester và
leader phản hồi.
12

- Sửa các lỗi về logic và Anh

Tạ

Phi 100%

Sinh viên biết cách giải

test case của tester và Phụng

quyết vấn đề và khắc phục

leader phản hồi.

lỗi.

- Sửa lỗi về giao diện sau
khi designer kiểm tra.
- Cải thiện trải nghiệm
người dùng.
13

- Báo cáo cuối đợt thực tập.

Hoàn thành đầy đủ các chỉ
tiêu được người hướng

dẫn đặt ra để kết thúc quá
trình học hỏi của giai đoạn
thực tập. Trang bị thêm
cho bản thân sinh viên kỹ
năng tự học, làm việc độc
lập và tự phát triển.

11


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.

2.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 quá
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ề quá
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 tuân
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, q 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
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.
12


2.2.

Nghiên cứu kỹ thuật

2.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ụ chuyên dụng cũng
như được cung cấp hoàn toà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à u cầu cơng việc.

2.2.2. Tìm hiểu ngơn ngữ Dart
Thời gian: 3 ngày.
Nội dung:
- 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).

13


- 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, … Ngoà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, …), ...
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty
14


- 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.2.3. Tìm hiểu kiến trú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.
- 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
15


đủ 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.2.4. Tìm hiểu Firebase và package trong Flutter
Thời gian: 3 ngày.
Nội dung:

16


- 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ả:

17


- 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.2.5. Lập trình ứng dụng 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

18


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.
19


- 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).

2.3.

Tham gia dự án thực tế

2.3.1. Giới thiệu ứng dụng
Đề tài ứng dụng thực tập được các anh chị trong nhóm training giao thực hiện đó là xây
dựng ứng dụng Hurry Hungry. Đây là một ứng dụng đặt đồ ăn trực tuyến với tiêu chí “Giúp mọi
người ăn ngon mọi lúc mọi nơi”. Chỉ với vài thao tác đơn giản, người dùng chỉ cần chọn đồ ăn,
chọn cửa hàng gần nhất và sau đó là đặt hàng. Đồ ăn sẽ được giao đến nhanh chóng và mức giá

cũng cực kỳ hợp lý với những chương trình ưu đãi ln diễn ra hằng ngày.

2.3.2. Thực hiện
Thành viên thực hiện:
- Lê Hoàng Phúc
- Bùi Khắc Lam
- Lê Hải Phong
- Nguyễn Hữu Nghị
- Hồ Quốc Nghĩa
Và sự giúp đỡ của trainer từ Mobile team.

20


2.3.3. Một số hình ảnh của ứng dụng

2.3.4. Kế hoạch
Thời gian: 2 tháng.
Nội dung: vận dụng những kiến thức đã học, kết hợp với kiến thực được các mentor hướng dẫn
trong vòng 1 tháng vừa qua, xây dựng ứng dụng chạy trên được cả Android và iOS:
- Xây dựng giao diện (UI) theo design có sẵn.
- Thực hiện tích hợp API để lấy thông tin và hiển thị thông tin tương ứng.

2.3.5. Kết quả
- Đã hoàn thành được UI theo như yêu cầu.
- Vận dụng RestAPI để tích hợp API lấy thơng tin.
- Hiểu được mơ hình Agile - Scrum khi phát triển một dự án.

21



CHƯƠNG 3:
3.1.

TỔNG KẾT

Điểm mạnh

Sau quá trình thực tập thì em đã rút ra được cho bản thân những kinh nghiệm quý báu cho bản
thân về đề tài thực tập, cũng như các kinh nghiệm quan trọng cho con đường công việc sau này:
- Học hỏi được quy trình làm việc cũng như tổ chức của một công ty thực tế.
- Học hỏi được thêm các kiến thức mới về Flutter cũng như cách làm việc với Firebase.
- Biết được một số quy trình, nguồn nhân lực và giải quyết các rủi ro.
- Học hỏi được cách tổ chức cũng như quản lý source code cho việc sao cho có thể dễ dàng bảo
trì và phát triển cũng như có thể thuận tiện cho việc đọc hiểu nếu có những người mới tham gia
vào dự án.
- Học được cách sử dụng các công cụ để trao đổi và giao tiếp, hỏi đáp về cơng việc mỗi khi có
thắc mắc để cơng việc được suôn sẻ.
- Học được cách dùng Gitlab để quản lý source code, raise issue.
- Học được các kỹ năng mềm và giao tiếp và báo cáo để có thể báo cáo công việc cũng như trao
đổi về công việc với các thành viên trong nhóm cũng như các PM.
- Học hỏi quy trình làm việc theo Scrum, quản lý task cơng việc theo các Sprint.

3.2.

Điểm yếu

Một số khó khăn sinh viên gặp phải trong quá trình thực tập tại cơng ty:
- Khó khăn về mặt di chuyển khi cơng ty có vị trí địa lý xa nhà.
- Khó khăn trong những ngày đầu làm quen với quy trình làm việc do sinh viên chưa được trải

nghiệm môi trường thực tế trước đây.
- Khó khăn về mặt giao tiếp, trao đổi công việc vào những ngày đầu do chưa quen biết được
toàn bộ các thành viên của team.
22


- Khó khăn về việc trao đổi dự án trong những ngày đầu với PM do sinh viên chưa nắm rõ được
quy trình làm việc thực tế của một cơng ty.
- Khó khăn trong những ngày đầu về việc quản lý source code dự án trên Gitlab của công ty.

3.3.

Chuẩn đạt được

Kết quả đạt được sau quá trình thực tập:
Goal Mục tiêu mơn học
G1

Hồn thiện tính năng xác thực, đăng nhập đăng ký, áp dụng vào dự án thực tế và cũng
như tham gia vào quá trình phát triển một ứng dụng thực tế của công ty.

G2

Hiểu thêm các kiến thức chuyên sâu hơn về Flutter.

G3

Hiểu được cách sử dụng Firebase cũng như tích hợp các dịch vụ của nó vào project.

G4


Hoàn thành tốt được thời gian thực tập và trở thành nhân viên chính thức của cơng ty

G5

Phát triển kỹ năng tư duy, kỹ năng làm việc nhóm và kỹ năng trình bày

G6

Đọc, hiểu các tài liệu và giao tiếp bằng tiếng Anh

23


TÀI LIỆU THAM KHẢO
[Theo định dạng APA]
1. Flutter documentation | Flutter [Internet]. [cited 2023 Jul 4]. Available from: />2. Flutter [Internet]. YouTube. [cited 2023 Jul 4]. Available from:
/>3. Biswas S. Add Flutter push notifications with Firebase Cloud Messaging [Internet]. LogRocket Blog.
2022 Mar 15 [cited 2023 Jul 4]. Available from: />4. Taneja R. Flutter Facebook Login [Internet]. Flutter Community. 2018 Aug 14 [cited 2023 Jul 4].
Available from: />5. Khan S. Google Sign In With Flutter [Internet]. FlutterDevs. 2020 Jul 29 [cited 2023 Jul 4].
Available from: />
24


×