Tải bản đầy đủ (.pdf) (28 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 (726.84 KB, 28 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: Vi Hữu Đức

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


2

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 2.1 triệu ứng dụng trên App Store và hơn 3.2 triệu
ứng dụng trên Google Play Store 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à 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ì 8. Và cơng ty em lựa 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 của Hàn Quốc với môi trường trẻ trung năng động và chuyên
nghiệp sẽ có thể giúp em thực hiện dự định này.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


3


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 2 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; 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 đó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.
Vi Hữu Đức
TPHCM, 15/06/2022

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


4

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

.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


5

MỤC LỤC

LỜI MỞ ĐẦU ....................................................................................................................... 2
LỜI CẢM ƠN........................................................................................................................ 3
NHẬN XÉT CỦA KHOA ....................................................................................................... 4
MỤC LỤC............................................................................................................................. 5
Chương 1: Giới thiệu công ty thực tập ................................................................................... 6
1.

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

2.

Sản phẩm của công ty: ...........................................................................................................6


Chương 2: Nội dung thực tập ................................................................................................ 7
1.

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

2.

Nghiên cứu kỹ thuật: .............................................................................................................8
2.1.
2.2.
2.3.
2.4.
2.5.

Các cơng cụ làm việc: ............................................................................................................................. 8
Tìm hiểu ngơn ngữ Dart: ........................................................................................................................ 8
Tìm hiểu kiến trúc tổ chức project của Flutter: .................................................................................. 10
Tìm hiểu Firebase và package trong Flutter: ...................................................................................... 11
Lập trình ứng dụng với Flutter cho 2 nền tảng di động là Android và iOS:...................................... 12

3.

Thực hiện project: ............................................................................................................... 15

4.

Lịch làm việc: ...................................................................................................................... 15

Chương 3: Chi tiết về project ............................................................................................... 20
1.


Giới thiệu về ứng dụng thương mại điện tử: ........................................................................ 20
1.1.
1.2.

Nội dung chính của ứng dụng: ............................................................................................................ 20
Cách sử dụng: ....................................................................................................................................... 23

2.

Thực hiện: ........................................................................................................................... 24

3.

Kế hoạch:............................................................................................................................. 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 q trình thực tập: ........................................................... 25

3.

Kinh nghiệm có được sau q trình thực tập: ......................................................................26

TÀI LIỆU THAM KHẢO .................................................................................................... 27


NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


6

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 Mỹ,
Singapore, Hàn Quốc 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ủa 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 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, …

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


7

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

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


8

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ụ chuyên 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 hồn cảnh và u cầu cơng việc.

2.2.

Tìm hiểu ngơn ngữ Dart:
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)
-

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

NHD: Tạ Phi Phụng


SVTT: Vi Hữu Đức


9

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

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

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức



10

-

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

2.3.

-

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.

Tìm hiểu kiến trúc tổ chức project của Flutter:
Thời gian: 5 ngày (1 tuần)
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 đủ 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

NHD: Tạ Phi Phụng


SVTT: Vi Hữu Đức


11

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

2.4.

-

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.

Tìm hiểu Firebase và package trong Flutter:
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ể

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


12

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 xun để 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.

-

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

2.5.

-

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.

Lập trình ứng dụng với Flutter cho 2 nền tảng di động là Android và
iOS:
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:

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


13

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
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á

NHD: Tạ Phi Phụng


SVTT: Vi Hữu Đức


14

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.

-

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

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức



15

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
1

Mức
độ
Cơng việc
Người hướng dẫn
hồn
thành
- Làm quen với các nhân viên Anh Tạ Phi Phụng 100%
của cơng ty, cách tổ chức,
quy trình làm việc ở cơng ty

Nhận xét của
người hướng dẫn
Sinh viên hoà đồng,
tiếp thu quy trình
nhanh


- 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ổ sung Anh Tạ Phi Phụng
thêm những kiến thức cần
thiết và quan trọng về ngơn
ngữ Dart (lập trình bất đồng
bộ, thao tác API, …)

100%

Nắm đủ kiến thức cơ
bản. Sinh viên được
thực hành lại kiến
thức đã có, cũng như
được góp ý để cải
thiện cách làm được
tốt hơn

100%

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


- 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à các Anh Tạ Phi Phụng
dịch vụ của nó.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


16

- Củng cố cũng như bổ 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.

chun mơn thực
tiễn khác

- 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 Tạ Phi Phụng
và Postman.
- Áp dụng những kiến thức về
API thực hiện một số ứng
dụng cơ bản.

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ế

5

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

100%

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
thêm sau này.

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

- Viết các Widget tái sử 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.

6

- Tìm hiểu thêm các kiến
thức về mơ hình và design
pattern.
Giai đoạn 1:
Anh Tạ Phi Phụng
- Tiến hành tạo giao diện
đăng nhập ban đầu theo các

module code và mơ hình đã
tìm hiểu.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


17

- 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.
- Đăng ký, thiết lập và liên
kết ứng dụng trên các nền
tảng như Facebook, Google.

7

- Hoàn thiện giao diện đăng
nhập với việc thực hiện chức
năng đăng nhập dựa trên 2
dạng social login được giao
là Facebook và Google.
Giai đoạn 1(tiếp):
Anh Tạ Phi Phụng

100%


Sinh viên có thể tự
mình độc lập tìm ra
phương pháp làm
việc, áp dụng tốt các
chỉ dẫn và gợi ý của
người hướng dẫn.
Bước đầu để chuẩn
bị cho giai đoạn làm
việc thực tế

100%

Sinh viên có thể
thực hiện các cơng
việc mang tính phức
tạp và vận dụng
nhiều kiến thức
cùng lúc

- Hoàn thành giao diện các
trang đăng ký, đăng nhập và
thiết lập tài khoản.
- Tiến hành thực hiện việc tạo
bảng và quản lý thông tin trên
Firebase cho ứng dụng như
thông tin người dùng, quản lý
thông tin đăng nhập.
- Tiến hành test thử việc
tương tác với các bảng dữ

liệu đã lập ra cũng như căn
chỉnh lại các bảng dữ liệu để
ứng dụng có thể hoạt động
đúng logic.
- Test trên nhiều thiết bị khác
nhau, đảm bảo giao diện và
tính năng khơng bị lỗi.
8

Giai đoạn 1(tiếp):
- Tích hợp module đăng
nhập, đăng ký vào source
chính của dự án.

NHD: Tạ Phi Phụng

Anh Tạ Phi Phụng

SVTT: Vi Hữu Đức


18

- 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 khi
designer kiểm tra.
9


Giai đoạn 2:
- Tìm hiểu và nghiên cứu
dịch vụ Google Map API.
- Thực hiện module Map
Service áp dụng những kiến
thức đã tìm hiểu được về
Google Map API.

10

Giai đoạn 2(tiếp)::

Anh Tạ Phi Phụng

100%

Anh Tạ Phi Phụng

100%

- Nghiên cứu design và
wireframe cho phần Bản đồ
ứng dụng.

Sinh viên có thể tự
mình độc lập tìm ra
phương pháp làm
việc, áp dụng tốt các
chỉ dẫn và gợi ý của
người hướng dẫn.

Bước đầu để chuẩn
bị cho giai đoạn làm
việc thực tế
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
thêm sau này.

- Lên kế hoạch thiết kế màn
hình và các logic liên quan.
- Tiến hành đưa ra phương
hướng và ý tưởng thực hiện
với người hướng dẫn và các
thành viên khác trong nhóm.
- Đưa ra giải pháp hiệu quả
và ý kiến với tiến độ dự án
hiện tại.
11

Giai đoạn 2(tiếp):
- Tiến hành thực hiện các
màn hình đã được giao và
tích hợp module Map Service
đã tạo trước đó vào dự án.

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

thêm sau này.

- Áp dụng logic theo đúng
yêu cầu dự án và đối với các
màn hình liên quan.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


19

12

Giai đoạn 2(tiếp):

Anh Tạ Phi Phụng

100%

Sinh viên biết cách
giải quyết vấn đề và
khắc phục lỗi.

Anh Tạ Phi Phụng

100%

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

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

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


20

Chương 3: Chi tiết về project

1. Giới thiệu về ứng dụng thương mại điện tử:
Đề tài ứng dụng thực tập được các anh chị trong nhóm training giao đó là thực
hiện 2 module là đăng ký, đăng nhập dành cho người dùng quản lý thông tin cá nhân
thông qua Social Login và dịch vụ bản đồ sử dụng Google Map API. Áp dụng các
module đã làm vào dự án thương mại điện tử.
1.1.

Nội dung chính của ứng dụng:

Nội dung chính của ứng dụng đó là sử dụng những thơng tin đăng nhập sẵn có
của các hệ thống mạng xã hội như Google, Facebook, Apple, Naver… để đăng nhập
và lưu trữ thông tin cá nhân mà không cần tạo tài khoản.
Ứng dụng cho phép người có thể đăng nhập thơng qua các cách thức đăng nhập
phổ biến hiện nay đó là dựa vào các dạng đăng nhập với Facebook, Google hoặc
Apple. Sau khi đăng nhập thì người dùng có thể dùng những thông tin cá nhân đã
lưu trữ ở những nền tảng này thành dữ liệu cho ứng dụng.
Tính năng này cũng giúp người dùng có thể liên kết tài khoản mạng xã hội với
ứng dụng thương mại điện tử, cải thiện tính tiện dụng cho người dùng và tăng sự
phổ biến cho ứng dụng thương mại điện tử.
Bên cạnh những tính năng đó, áp dụng tính năng bản đồ sử dụng Google Map
API được cung cấp bởi Google. Đa số người dùng smartphone hiện nay đều sử dụng
dịch vụ Google map trong nhiều mục đích khác nhau và ứng dụng áp dụng dịch vụ
này vừa phù hợp với yêu cầu của ứng dụng vừa có độ chính xác cao và người dùng
dễ sử dụng.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức



21

Nhóm màn hình đăng nhập bằng Social Login

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


22

Nhóm màn hình sử dụng tính năng Google Map

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


23

1.2.

Cách sử dụng:
Mô tả: Người dùng sẽ đăng nhập vào ứng dụng thông qua các phương thức
được cung cấp sẵn như Google, hay Facebook (Apple và Kakao sẽ được phát
triển sau). Sau khi đã đăng nhập thì người dùng có thể xem được các người
dùng khác cũng đã đăng nhập vào ứng dụng, các thông tin này là các thông
tin public từ các tài khoản mà người dùng đã đăng nhập như tên, ảnh đại diện,
ngày tháng năm sinh nếu người dùng đồng ý các yêu cầu quyền cho những
dữ liệu này. Tính năng sử dụng Google Map giúp người dùng kiểm tra trạng

thái đơn hàng và vị trí, khoảng cách của người giao hàng so với người dùng.
Tóm tắt:
-

Đăng nhập: Người dùng chọn 1 trong 2 phương thức đăng nhập đã được
triển khai là Google hoặc Facebook để đăng nhập vào ứng dụng.

-

Thông tin người dùng: Mặc định sẽ là thông tin đăng nhập cơ bản từ người
dùng được lấy ra từ tài khoản như tên và ảnh đại diện. Người dùng có thể
cập nhật lại nếu muốn.

-

Google Map: kiểm tra trạng thái của đơn hàng và người giao hàng.

Kết quả:
-

Người dùng đăng nhập bằng Google:
+ Thông tin đăng nhập gồm ảnh đại diện và tên sẽ dựa theo tài khoản
Google mà người dùng đăng nhập
+ Các thông tin này có thể thay đổi và được lưu trữ lại nếu người dùng
thay đổi.

-

Người dùng đăng nhập bằng Facebook:
+ Thông tin đăng nhập gồm ảnh đại diện và tên của người dùng đặt trên

Facebook
+ Các thơng tin này sẽ có thể cập nhật và lưu trữ lại nếu người dùng thay
đổi.

-

Người dùng sử dụng tính năng Google Map được tích hợp:
+ Kiểm tra tình trạng đơn hàng người dùng đã đặt trước đó.
+ Kiểm tra vị trí người giao hàng khi đơn hàng trong trạng thái đang được
giao.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


24

2. Thực hiện:
Thành viên thực hiện:
-

Vi Hữu Đức

Và sự giúp đỡ của trainer từ Mobile team.
3. Kế hoạch:
Giai đoạn 1:
-

Hoàn thành giao diện đăng nhập ứng dụng.


-

Tiến hành học hỏi về làm việc với Firebase.
+ Đầu tiên là tạo project và đăng kí ứng dụng trên Firebase.
+ Học hỏi cách thiết lập đăng nhập ứng dụng với Firebase.
+ Học hỏi cách sử dụng các package của Flutter cho việc đăng nhập và chuẩn bị
theo hướng dẫn cần thiết để ứng dụng có thể đăng nhập thơng qua Firebase.
+ Học cách tạo ứng dụng trên Facebook developer để có thể đăng nhập thông
qua Facebook.
+ Học hỏi việc tạo bảng quản lý thông tin trên Firebase.

-

Tiến hành chạy ứng dụng và sử dụng phần đăng nhập.

Kết quả:
-

Kết quả: Ứng dụng có thể đăng nhập với 2 dạng “social login” là Google và
Facebook thông qua Firebase.

-

Lấy được các thông tin của người dùng và tiến hành lưu vào các bảng đã tạo để
quản lý thông tin người dùng trên Firebase.

-

Tạo được project trên Firebase và đăng ký ứng dụng cũng như đăng ký ứng dụng

trên Facebook developer.

Giai đoạn 2:
-

Thực hiện module Google Map.

-

Thực hiện UI cho ứng dụng ở những màn hình sử dụng Google Map.

-

Tích hợp Google Map vào dự án.

-

Sửa lỗi và hoàn thiện.

NHD: Tạ Phi Phụng

SVTT: Vi Hữu Đức


25

-

Chỉnh sửa giao diện cũng như tính năng theo yêu cầu của trainer.


-

Hồn thiện việc lưu trữ các thơng tin lên Firebase cũng như truy xuất các thông
tin từ Firebase.

Kết quả:
- Người dùng có thể sử dụng Google Map cho một số chức năng phù hợp với yêu
cầu của ứng dụng.
- Nâng cao trải nghiệm người dùng.

Chương 4: Tổng kết quá trình thực tập
1. Kết quả đạt được:
Kết quả đạt được sau q trình thực tập:
-

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.

-

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

-

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.

-

Hồ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.

2. Những khó khăn gặp phải trong q trình thực tập:
Một số khó khăn sinh viên gặp phải trong q 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 tồn bộ các thành viên của team.

-

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.

NHD: Tạ Phi Phụng


SVTT: Vi Hữu Đức


×