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

Lập trình mobile 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 (470.31 KB, 17 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
KHOA CƠNG NGHỆ PHẦN MỀM

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

LẬP TRÌNH MOBILE VỚI FLUTTER

Cơng ty thực tập : VINOVA
Người phụ trách : Nguyễn Việt Anh – Flutter Leader
Thực tập sinh :

Huỳnh Trọng Phục

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


LỜI MỞ ĐẦU

Hiện nay, trên thế giới, hầu như mọi thứ trong cuộc sống đều liên quan đến việc ứng
dụng công nghệ thông tin, các hoạt động trong đời sống xã hội như: giao lưu, giải trí, việc
làm đều có thể trở nên dễ dàng hơn nhờ chiếc điện thoại nhỏ gọn trong tầm tay đến thế giới
đám mây của công nghệ số.
Các ứng dụng trên điện thoại đang ngày càng phổ biến và nhiều người sử dụng,
đồng thời có thể truy cập từ các nền tảng khác nhau như Android hay IOS. Có rất nhiều
cơng ty đang tập trung vào phát triển ứng dụng di động, một trong những cơng ty đó là
Vinova. Đây là một cơng ty đa quốc gia với văn phịng tại Thành phố Hồ Chí Minh, thành
phố Đà Nẵng, thành phố Hà Nội và Midview City (Singapore). Công ty được thành lập
với châm ngôn “Customer Focus, Integrity, Teamwork, Personal Excellence, and
Challenger Spirit.”.


Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế,
cũng như muốn được tham gia lập trình di động trong một mơi trường chun
nghiệp, em có dự định là sẽ thực tập trong hè. Vì vậy, em quyết định chọn Vinova một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được
dự định này.


LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty VINOVA đã tạo điều kiện cho em có cơ hội được
thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer,
nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được
một ứng dụng di động. Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều
thời gian,cơng sức để hướng dẫn chúng em hoàn thành đợt thực tập này. Đặc biệt cảm ơn
anh Nguyễn Việt Anh, đã training Flutter, hướng dẫn, giúp đỡ cho chúng em tận tình cả
những khó khăn trong cơng việc, đến những khó khăn việc làm quen với môi trường mới.
Em xin cảm ơn anh Phát - leader team mobile, và mọi người trong team mobile đã
nhiệt tình giúp đỡ, hỗ trợ em trong quá trình em thực tập tại quý công ty.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo
điều kiện em làm bài báo cáo này.

Huỳnh Trọng Phục
Thành phố Hồ Chí Minh, ngày 20 tháng 12 năm 2022


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

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


1

MỤC LỤC
Chương 1: Giới thiệu công ty thực tập...................................................................................................... 2
1. Giới thiệu công ty Vinova. .......................................................................................................... 2
2.


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

Chương 2: Nội dung thực tập .................................................................................................................... 4
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ............................................................ 4
2.

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

3.

Thực hiện project ........................................................................................................................ 7

4.

Lịch làm việc ................................................................................................................................ 8

Chương 3: Chi tiết project ......................................................................................................................... 9
1. Giới thiệu về ứng dụng - Aunty ................................................................................................. 9
2.

Thực hiện ..................................................................................................................................... 9

3.

Kế hoạch .................................................................................................................................... 10

TÀI LIỆU THAM KHẢO ........................................................................................................................ 12
TỔNG KẾT.................................................................................................................................................... 13


NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


2

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

1. Giới thiệu công ty Vinova.
Tên công ty: Công ty cổ phần Công nghệ VINOVA
Tên viết tắt: VINOVA Ltd.
Trang web công ty: />Vinova là công ty phần mềm chuyên về phát triển sản phẩm cho các công ty
startup. Được thành lập năm 2010, Vinova nhanh chóng trở thành một trong top 10
Mobile Applications Development Companies tại Singapore.
Khách hàng của Vinova đến từ Mỹ, Singapore, Việt Nam, Thái Lan, Hàn Quốc,
Trung Quốc,…
Vinova sử dụng .Net, Swift, Flutter, Ruby on Rails, NodeJS, PHP, React Native,
Java để phát triển các ứng dụng web, mobile và mobile game của mình, kết hợp với các
quy trình phần mềm hiện đại như Scrum, Agile.
2. Sản phẩm của công ty.
Là một công ty outsourcing nên các sản phẩm của Vinova cũng rất đa dạng từ
công nghệ cho đến nền tảng sử dụng.
Có thể điểm qua một số sản phẩm của công ty như:

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC



3

The Straits Times (Android App, iOS App) : Ứng dụng đọc báo của tờ báo lớn nhất
Singapore.

SG50 Quiz (Mobile Game): Ứng dụng Quiz về Singapore từ du lịch , ẩm thực,…
NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


4

MyLifeInc Website: Trang web bán lẻ của Eu Yan Sang (Trung Quốc)
Chương 2: Nội dung thực tập
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong 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 nghe chị Sara – Admin tại văn phịng HCM giới thiệu về cơng ty, quá trình
thành lập và phát triển (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp,
cách thức tổ chức của cơng ty.
Ngồi ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như
thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc.
Được hướng dẫn set up, sử dụng các công cụ giao tiếp (slack, gmail), công cụ quản
lý source code (Gitlab), công cụ quản lý dự án (Unfuddle).


Kết quả :
-

Hiểu thêm về cơng ty Vinova, q trình thành lập và phát triển.
Có thêm các kỹ năng về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có
kỷ luật, có trách nhiệm hơn.
Tăng kỹ năng giao tiếp, làm việc nhóm.

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


5

2. Nghiên cứu kỹ thuật.
2.1 Các công cụ làm việc.
Thời gian : 1 ngày
Nội dung : Tìm hiểu về các cơng cụ sẽ được sử dụng trong q trình làm việc.
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các cơng
cụ sẽ giúp ích cho trong công việc sau này. Một số phần mềm, ứng dụng như: Slack
– dùng để giao tiếp; Gitlab – quản lý source code; Unfuddle – quản lý task, dự án,
Postman – dùng để kiểm tra, review API; Hrpartner – quản lý nhân sự công ty.
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Hiểu biết thêm được các công cụ hỗ trợ cho công việc lập trình, và hoạt
động tại cơng ty.
2.2 Tìm hiểu ngơn ngữ Dart.
Thời gian: 2 ngày
Nội dung: Tìm hiểu ngơn ngữ Dart, áp dụng OOP cho ví dụ.
Tìm hiểu cách sử dụng từng tính năng chính của Dart, từ các biến và toán tử cho

các lớp và thư viện:
-

-

-

-

Variables và data types
Biết được các cách khai báo biến trong Dart, các kiểu dữ liệu và dung lượng
bộ nhớ phân bổ cho từng biến như thế nào.
Control flow statements
Biết được syntax, cách dùng của các câu lệnh điều kiện và vòng lặp trong
Dart.
Classes và objects
Biết cách tạo 1 class , object.
Encapsulation, polymorphism, abstraction, and inheritance
Yêu cầu thực tập sinh ứng dụng dược các tính chất của OOP với ngơn ngữ
Dart.
Mixins
Hiểu được mixins là gì, ứng dụng được mixins.
Functions
Futures, async, and await
Biết sử dụng async và await để đồng bộ chương trình.

Thực hiện:
NGUYỄN VIỆT ANH

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 về kiến thức đã học.
HUỲNH TRỌNG PHỤC


6

Kết quả:
-

Nắm bắt được ngôn ngữ Dart.
Tăng khả năng tự học của bản thân
Tăng khả năng giao tiếp với các thành viên trong team.

2.3 Tìm hiểu về Flutter.
Thời gian: 2 ngày
Nội dung: Tìm hiểu Flutter SDK, các thành phần giao diện của Flutter.
Tìm hiểu cách sử dụng từng tính năng chính của Dart, từ các biến và tốn tử cho
các lớp và thư viện:
-

Stateless and Stateful Widget:
Hiểu được Stateless và Stateful Widget là gì? Khi nào nên sử dụng Stateless
và Stateful, và sự khác biệt giữa chúng.

-

Stateful Widget lifecycle:
Yêu cầu nắm bắt được vòng đời của Stateful Widget, biết sử dụng các
method của Stateful Widget.


-

Basic widgets:
Yêu cầu sử dụng được: Scaffold, AppBar, Column, Row, Icon,
ElevatedButton, Container, Text.

-

Cupertino widgets:
Biết sử dụng Cupertino widgets để có thể tạo giao diện đẹp hơn cho IOS.

-

Material Components widgets:
Yêu cầu sử dụng được: BottomNavigationBar, Drawer, TabBar, TabView,
các loại button, TextField, các loại dialog.

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 về kiến thức đã học.
Kết quả:
-

NGUYỄN VIỆT ANH

Xây dựng được ứng dụng demo.
Nắm bắt được cách tạo 1 ứng dụng với Flutter.

HUỲNH TRỌNG PHỤC



7

2.4 Tìm hiểu các State Management.
Thời gian: 2 ngày
Nội dung: Biết sử dụng ít nhất một trong các state management sau: Bloc, GetX,
Redux
Thực hiện:
-

Tìm hiểu Bloc, GetX
Xây dựng 1 ứng dụng demo.

Kết quả:
-

Xây dựng được ứng dụng demo
Hiểu rõ được Bloc và GetX

2.5 Tìm hiểu về Firebase và Flutter nâng cao.
Thời gian: 4 ngày
Nội dung:
-

Biết cách set up Firebase cho ứng dụng.
Biết push notification bằng Firebase cloud messaging.
Yêu cầu thực tập sinh biết cách tạo được animation trong Flutter.
Hiểu được MethodChannel là gì và cách thực hiện.

Thực hiện:

-

Tìm hiểu các nội dung yêu cầu.
Code demo cho từng yêu cầu trên.

Kết quả:
-

Biết cách thực hiện một project với Firebase.
Cách tạo animation bằng Tween, AnimationController.
Viết được code demo, lấy giá trị của Pin thiết bị bằng MethodChannel.

3. Thực hiện project
Sau ba tuần đượ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. Trong tháng thứ hai, trainer được tham gia vào một dự án
thực tế.
Chi tiết dự án sẽ được nói ở phần sau.

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


8

4. Lịch làm việc
Tuần

1


2

3

4

5

6

7

Cơng việc
• Tìm hiểu về cơng ty,
cách tổ chức của cơng
ty
• Tìm hiểu ngơn ngữ
Dart
• Tìm hiểu về Flutter
• Tìm hiểu về State
Management
• Tìm hiểu, setup
Firebase
• Tìm hiểu push
notification bằng
Firebase cloud
messaging
• Flutter animation
• Flutter
MethodChannel

• Tham gia dự án Aunty
• Làm việc với PO, BA
bàn về dự án
• Code phần Login ,
Register, Verify phone
number, forgot
password
• Fix bug
• Code UI cho phần
“Parent Home”
• Code “Choose role
screen”
• Fix bug
• Code phần “Create
request”, “Find Sitter”
• Fix bug
• Call API cho “Parent
Home”

NGUYỄN VIỆT ANH

Người hướng dẫn

-

Nguyễn Việt Anh
Trần Văn Việt

-


Nguyễn Việt Anh
Trần Văn Việt

-

Nguyễn Việt Anh
Vũ Thế Hòa
Trần Văn Việt

-

Nguyễn Việt Anh
Nguyễn Việt
Thắng

-

Nguyễn Việt Anh

-

Nguyễn Việt Anh

-

Nguyễn Việt Anh

Mức
độ
hoàn

thành

Nhận xét của
người hướng
dẫn

HUỲNH TRỌNG PHỤC


9

8

• Code “Service Request
Detail”, “Job detail”
• Fix bug

-

Nguyễn Việt Anh

Chương 3: Chi tiết project
1. Giới thiệu về ứng dụng - Aunty
Aunty là ứng dụng được phát triển cho khách hàng ở Singapore.
Aunty là một ứng dụng kết nối bố mẹ (parent) với những người trông trẻ (sitter)
đáng tin cậy. Parent có thể tạo u cầu trơng trẻ (request), mời sitter đến làm việc, sitter
cũng có thể tham gia vào các request khác nếu có thể làm được sau khi gửi yêu cầu và
được parent chấp nhận.
Đây là ứng dụng kép – parent và sitter dùng chung một ứng dụng. Ứng dụng có
phân quyền.

2. Thực hiện
Team back-end gồm 4 thành viên.
Team front-end gồm 4 thành viên.
Dùng Unfuddle để quản lý dự án:

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


10

Gitlab để quản lý source code.

3. Kế hoạch
Giai đoạn 1:
-

Tham khảo tài liệu, tìm hiểu về dự án
Set up dự án.
Thực hiện các tính năng Đăng nhập, đăng ký.
Thực hiện tính năng chọn quyền để vào ứng dụng.
Xây dựng màn hình Parent Profile và Sitter Profile.
Xây dựng trang Home của parent
Kết quả:
- Nắm bắt được các chức năng, luồng điều khiển, các giai đoạn phát triển dự án.
- Hoàn thành xây dựng UI cho các tính năng đăng nhập, đăng ký, chọn quyền để
vào ứng dụng, trang profile của parent và sitter, parent home.
- Hoàn thành gọi API của các màn hình trên do back-end cung cấp.


Giai đoạn 2:
- Thực hiện được các tính năng:
• Parent:
- Thêm thơng tin địa chỉ, con cái.
- Tạo service request
- Chỉnh sửa service request
- Tìm kiếm sitter, mời được sitter tham gia vào request
- Xem thông tin chi tiết của request
NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


11

- Hiển thị các jobs, request của parent đã tạo
- Chỉnh sửa service request
- Chỉnh sửa jobs
• Sitter:
- Hiển thị các request của parent khác yêu cầu
- Hiển thị các request của parent khác chưa có người nhận
- Apply vào request của parent
- Chỉnh sửa thông tin cá nhân
- Hiển thị danh sách jobs đã nhận
Kết quả:
- Hoàn thành các nhiệm vụ đúng thời hạn.
- Cải thiện được khả năng refactor code
- Nhận được feedback tốt từ khách hàng

NGUYỄN VIỆT ANH


HUỲNH TRỌNG PHỤC


12

TÀI LIỆU THAM KHẢO
1. />2. />3. />4. />5. />6. Và một số tài liệu nội bộ của công ty.

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC


13

TỔNG KẾT
Như vậy, chỉ trong vòng ba tuần ngắn ngủi, em đã có thể nắm vững được kiến thức về
Flutter, các cơng nghệ có liên quan. Đồng thời, em đã cải thiện được khả năng viết code, refactor
code, cũng như khả năng giao tiếp và khả năng làm việc nhóm. Và sau đó, em đã có thể tham
gia vào dự án thực tế. Được tham gia dự án với vai trị một trong những người code chính, tuy
cơng việc có nặng hơn bình thường, nhưng nhờ đó em đã có thể cải thiện rất nhiều các kỹ thuật
cũng như kỹ năng của mình. Dự án hiện sắp được phát hành trên CH Play và App Store, và đó
sẽ là một cột mốc ý nghĩa trong sự nghiệp của em sau này.
Cuối cùng, em xin chân thành cảm ơn sự giúp đỡ của các anh chị nhóm Flutter, PO, PA
và nhóm Back-end, đã hỗ trợ em trong quá trình tham gia dự án.

NGUYỄN VIỆT ANH

HUỲNH TRỌNG PHỤC




×