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
Trang 1TRƯỜ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
Trang 2LỜ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 toà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à
Trang 3Flutter 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
Trang 4ở 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ể hoà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
Trang 5đóng góp và chỉ dẫn của các anh chị thì em đã có thể hoà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
Trang 6NHẬN XÉT CỦA KHOA
Trang 7
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
Trang 8CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 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ó chuyên 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, ngoà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
Trang 9ty để quản lý source code, ngoà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 Ngoà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 Lịch làm việc tại công ty
dẫn
Mức độ hoàn thành
Nhận xét của người hướng dẫn
1 - Làm quen với các nhân
viên của công ty, cách tổ
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, …)
Anh Tạ Phi Phụng
100% Sinh viên hoà đồng, tiếp
thu quy trình nhanh
2 - Ôn tập lại cũng như bổ
sung thêm những kiến thức
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
Trang 10kiến thức đã được hướng
package trong Flutter từ
nơi tìm đến việc quản lý
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 chuyên môn thực tiễn khác
4 - Tìm hiểu về RESTful API
và Postman
- Áp dụng những kiến thức
về API thực hiện một số
Anh Tạ Phi Phụng
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ế
Trang 11100% 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
- 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
Anh Tạ Phi Phụng
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
Trang 12khi designer kiểm tra
10 - 11 Giai đoạn 2:
- Thực hiện tích hợp API
để lấy thông tin và hiển thị
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
Anh Tạ Phi Phụng
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
12 - 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
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
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
Trang 13CHƯƠ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 toà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 chuyên 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
- Ngoà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, ngoài ra còn có các thông tin về tài khoản của nhân viên như email, gitlab, …
Kết quả:
- Hiểu thêm về công ty Lecle Vietnam, quá trình thành lập và phát triển, ngoà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ó
Trang 142.2 Nghiên cứu kỹ thuật
so sánh việc sử dụng các IDE để qua đó có thể chọn được IDE thích hợp và làm việc lâu dài
hoặc tùy vào hoàn cảnh và yêu cầu công việc
2.2.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)
Trang 15- 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 Ngoà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
Trang 16- 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
- Ngoà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
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 Ngoà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