Tải bản đầy đủ (.docx) (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 (556.57 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.
Nguyễn VIệt anh

Huỳnh Trọng Phục


3


Có thể điểm qua một số sản phẩm của cơng ty như:

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

Nguyễn VIệt anh

Huỳnh Trọng Phục


4

SG50 Quiz (Mobile Game): Ứng dụng Quiz về Singapore từ du lịch , ẩm thực,…

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

Nguyễn VIệt anh

Huỳnh Trọng Phục


5

-

Tăng kỹ năng giao tiếp, làm việc nhóm.

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 quá 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à tố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

Huỳnh Trọng Phục


6


-

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

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

Nguyễn VIệt anh

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

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

Home”
 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
Nguyễn VIệt anh

Huỳnh Trọng Phục


11

- Tìm kiếm sitter, mời được sitter tham gia vào request
- Xem thông tin chi tiết của request
- 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




×