TTDN 19522213 NguyễnVõĐứcThắng SE501 N11 PMCL 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 FLUTTER TRÊN THIẾT BỊ DI ĐỘNG Công ty thực tập Công ty TNHH Hopee Ng[.]
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
LẬP TRÌNH FLUTTER TRÊN THIẾT BỊ
DI ĐỘNG
Công ty thực tập : Công ty TNHH Hopee Người phụ trách : Phạm Thị Hoài Chi Thực tập sinh : Nguyễn Võ Đức Thắng
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2LỜI MỞ ĐẦU
Ngày nay, tỉ lệ dùng internet lên tới 70% dân số, tức khoảng 68 triệu người (thống kê bởi VNetwork) Song hành với nó là sự phát triển của ngành công nghệ thông tin nói chung và sự vươn lên mạnh mẽ của các ứng dụng trên điện thoại di động nói riêng
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải là ngoại lệ Ngành công nghiệp mobile non trẻ của Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công
ty hàng đầu về công nghệ trên thế giới Bên cạnh những công ty trẻ tuổi trong nước, những công
ty lớn trên thế giới cũng gia nhập vào thị trường Việt Nam, góp phần rất lớn vào sự phát triển tích cực của công nghệ mobile của Việt Nam
Các ứng dụng trên mobile được sử dụng và biết đến rộng rãi trong cộng đồng, cũng như khả năng truy cập bằng nhiều thiết bị và nền tảng như IOs và Android Vì vậy em quyết định chọn lập trình Flutter trên thiết bị di động làm định hướng cho việc thực tập của mình
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ư tham gia vào môi trường làm việc chuyên nghiệp, em có dự định thực tập trong kỳ một năm bốn Vì vậy,
em quyết định chọn công ty TNHH Hopee - một môi trường lý tưởng, hiện đại, chuyên nghiệp
để thực hiện dự định này
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty TNHH Hopee đã 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 các anh/chị, 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 website hoàn chỉnh Chân thành cảm ơn các anh/chị đã 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 chị Phạm Thị Hoài Chi đã hướng dẫn và 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 trong việc làm quen với môi trường mới 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
Nguyễn Võ Đức Thắng Tp.HCM, ngày 27 tháng 12 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5MỤC LỤC
Chương 1 GIỚI THIỆU CÔNG TY THỰC TẬP 1
Chương 2 NỘI DUNG THỰC TẬP 2
1.3 Tìm hiểu và tập huấn quy trình làm việc, kiến thức mới 3
1.3.2 Tìm hiểu các ngôn ngữ và framework (Dart - Flutter) 3
Chương 3 THỰC HIỆN DỰ ÁN 5
Chương 4 CHI TIẾT VỀ DỰ ÁN 8
Trang 6Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu về công ty Singalarity
Hopee là một công ty tư vấn và kỹ thuật CNTT cung cấp các giải pháp phần mềm đầu cuối cho các doanh nghiệp, nhà cung cấp phần mềm độc lập, cơ quan kỹ thuật số và công
ty khởi nghiệp
Với tầm nhìn là trở thành một trong những nhà cung cấp dịch vụ và giải pháp CNTT hàng đầu tại Việt Nam và Châu Á
2 Sản phẩm và dịch vụ của công ty
● Web & App Development: Tất cả các loại phần mềm dựa trên web và ứng dụng dành
cho thiết bị di động cho tất cả các nền tảng, thiết bị và đối tượng
● E-commerce Development: Các giải pháp thương mại điện tử cho các mô hình kinh
doanh đa dạng hoạt động trơn tru trên tất cả các nền tảng
● AI & Blockchain Development: Nhiều loại giải pháp AI và phát triển Chuỗi khối đáp
ứng nhu cầu kinh doanh đa dạng
● IT Consulting: Chinh phục những thách thức kinh doanh phức tạp với chuyên môn về
phát triển giải pháp trong các ngành
1
Trang 7Chương 2: NỘI DUNG THỰC TẬP
Đợt thực tập ở công ty Hopee nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về quy trình phát triển một ứng dụng mobile và việc tích hợp back-end vào ứng dụng Đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, kỹ năng giao tiếp, lên kế hoạch, kiểm soát thời gian 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 chuyên nghiệp
1 Tìm hiểu văn hóa và nghiên cứu kỹ thuật
1.1 Văn hóa
● Thời gian: 2 ngày.
● Nội dung: Giới thiệu về công ty, văn hóa làm việc và cài đặt và hướng dẫn sử dụng các
ứng dụng phục vụ cho công việc
○ Sinh viên được giới thiệu về cơ cấu tổ chức của công ty, các khẩu ngữ, nguyên tắc cốt lõi trong công việc
○ Đọc, hiểu, tự tin áp dụng các khẩu ngữ vào quá trình thực tập cũng như cuộc sống
● Kết quả: Nắm được văn hóa làm việc của công ty và các ứng dụng phụ trợ cho việc thực
tập
1.2 Nghiên cứu kỹ thuật
● Thời gian: 3 ngày.
● Nội dung: Trong thời gian chờ đợi được phân vào đội nhóm thực hiện dự án thực tế cũng
như chờ các tài khoản nội bộ được kích hoạt, sinh viên được giao tìm hiểu về các cơ chế
cơ bản của Flutter như state là gì? widget là gì? Phân biệt tính chất của widget tree, render tree,… Tìm hiểu về Clean Architecture và GetX dùng để quản lý state của một ứng dụng Flutter một cách đơn giản và tường minh
● Kết quả: Hiểu rõ hơn về Flutter, nắm bắt được các lý thuyết hoạt động của Framework
này Hiểu biết về Clean Architecture và GetX về cách thức vận hành cũng như xây dựng ứng dụng demo
Trang 81.3 Tìm hiểu và tập huấn quy trình làm việc, kiến thức mới
1.3.1 Các công cụ và quy trình làm việc
● Thời gian: 4 ngày
● Nội dung: Sau khi tiếp nhận các tài khoản nội bộ Sinh viên được hướng dẫn về DevOps,
CI/CD, các nguyên tắc, quy ước trong mã nguồn và cách làm việc với GitLab, quá trình review mà merge mã nguồn Sinh viên được yêu cầu đọc và review trước mã nguồn, tài liệu của dự án trước khi chính thức nhận nhiệm vụ thao tác trực tiếp trên mã nguồn
● Thực hiện: Tham gia buổi hướng dẫn, đọc các tài liệu liên quan đến các công cụ được sử
dụng để phát triển dự án
● Kết quả: Hiểu được tổng quan về dự án, các tác nhân trong và ngoài có liên quan, hiểu
được mã nguồn và các quy ước chung khi thao tác trên dự án Hiểu biết về DevOps, CI/CD và cách thao tác với GitLab
1.3.2 Tìm hiểu các ngôn ngữ và framework (Dart - Flutter)
● Thời gian: 3 ngày
● Nội dung: Được giao nhiệm vụ tìm hiểu các lý thuyết hoạt động của Flutter, cách thức
vận hành của một ứng dụng Flutter Các nội dung chính được tóm tắt như sau:
○ Widget: “Mọi thứ trong Flutter đều là Widget” – một câu nói nổi tiếng trong tài
liệu chính thức của Flutter, khi học trên trường, em cũng cho rằng như vậy, tuy nhiên khi tìm hiểu sâu hơn thì Widget dường như là một bản thiết kế, Flutter dựa vào bản thiết kế này để render ra các thành phần UI, các thành phần này thực chất
là Element và RenderObject
○ Element: Là đại diện cho instance của một Widget tại một vị trí cụ thể trong hệ
thống cây, đây là thành phần UI thật để hiển thị trên màn hình
○ RenderObject: Chịu trách nhiệm căn chỉnh kích thước, sắp xếp vị trí, canh
chỉnh, hoàn thiện tô màu cho Element
○ Quan hệ giữa Element, Widget và State: Trong hàm runApp, ta truyền vào một
Widget Tree với MyApp là root Widget Flutter sẽ đi từ root đến hết cây, mỗi Widget trên cây sẽ gọi hàm createElement để tạo các Element và từ đó tạo nên Element Tree Stateful Widget sẽ tạo ra Stateful Element tham chiếu đến state cụ thể và Stateless Widget sẽ tạo ra Stateless Element và chỉ tham chiếu đến Widget
3
Trang 9○ Quan hệ giữa Widget, Element và Render Object: mỗi Render Object Element
khi được gắn lên Element Tree sẽ nhờ widget mà nó đang nắm giữ gọi hàm create Render Object() để tạo ra object render Object và nó sẽ nắm giữ tham chiếu của renderObject Từ render Object sẽ nhờ các hàm paint, performLayout để tạo nên giao diện hiển thị
○ Quá trình rebuild: Mỗi lần Widget bị rebuild, Element sẽ so sánh Widget và
State xem có gì khác so với ban đầu không rồi đưa đến quyết định xây dựng lại
○ Cơ chế Hot reload: Khi thực hiện bất kì thay đổi nào trong mã thì có thể thấy
chúng ngay lập tức mà không cần phải khởi động lại ứng dụng bằng cơ chế thay đổi thêm bớt mã ngay trong run time giúp tiết kiệm thời gian
○ Thực hiện: Đọc tài liệu, tham gia buổi hướng dẫn, chia sẻ kiến thức.
● Kết quả: Có hiểu biết sâu hơn về cách thức vận hành của Framework Flutter, các ưu
điểm và hạn chế so với các Framework khác, khi nào và trong tình huống nào thì nên dùng Framework này
Trang 10Chương 3: THỰC HIỆN DỰ ÁN
1 Thực hiện dự án
Trong khoảng thời gian 1 tháng được hướng dẫn và thực hiện công việc trực tiếp trên dự
án thực tế, sinh viên có những hiểu biết sâu sắc hơn về quy trình phát triển phần mềm, các kiến thức kỹ thuật liên quan đến phát triển ứng dụng cross platform Cách tiếp nhận feedback nội bộ cũng như từ khách hàng để hoàn thiện sản phẩm, đảm bảo chất lượng sản phẩm cao nhất
2 Lịch làm việc
hướng dẫn
Mức độ hoàn thành
Nhận xét người hướng dẫn
1 - Tìm hiểu về văn hóa làm việc
tại công ty công ty
- Nghiên cứu các công nghệ sử dụng cho công việc
Phạm Vũ 100% Hoàn thành
tốt
2 - Cài đặt các ứng dụng phục vụ
cho công ty
- Tìm hiểu cách thức và nguyên tắc sử dụng Git, CI/CD
Phạm Vũ 100% Hoàn thành
tốt
3 - Tìm hiểu cách nhận task và
báo cáo, cách push code và pull request trên GitLab
- Tìm hiểu về ngôn ngữ Dart, framework Flutter, Clean Architecture, GetX State management
Hoàng Văn Lâm
100% Hoàn thành
tốt
4 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
Hoàng Văn Lâm
100% Hoàn thành
tốt
5
Trang 11khách hàng.
- Nhận các tasks phù hợp với
năng lực bản thân
- Sửa đổi code theo yêu cầu
code review
4 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
khách hàng
- Nhận các tasks phù hợp với
năng lực bản thân
- Sửa đổi code theo yêu cầu
code review
Hoàng Văn Lâm
100% Hoàn thành
tốt
5 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
khách hàng
- Nhận các tasks phù hợp với
năng lực bản thân
- Sửa đổi code theo yêu cầu
code review
Hoàng Văn Lâm 100% Hoàn thànhtốt
6 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
khách hàng
- Nhận các tasks phù hợp với
năng lực bản thân
Hoàng Văn Lâm
100% Hoàn thành
tốt
Trang 12- Sửa đổi code theo yêu cầu
code review
7 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
khách hàng
- Nhận các tasks phù hợp với
năng lực bản thân
- Sửa đổi code theo yêu cầu
code review
Hoàng Văn Lâm
100% Hoàn thành
tốt
8 - Tham gia thực hiện dự án thực
tế
- Tham gia các cuộc họp với
khách hàng
- Nhận các tasks phù hợp với
năng lực bản thân
- Sửa đổi code theo yêu cầu
code review
Hoàng Văn Lâm
100% Hoàn thành
tốt
7
Trang 13Chương 4: CHI TIẾT VỀ DỰ ÁN
1 Giới thiệu về dự án
Tên dự án: ADO
Giới thiệu: là phần mềm được phát triển cho một đối tác ở Nhật Bản, cung cấp dịch vụ
khám chữa bệnh từ các phòng khám có các bác sĩ với hơn 20 năm kinh nghiệm về lĩnh vực của họ cho các bệnh nhân ở Việt Nam, Trung Quốc cũng như Nhật Bản có nhu cầu tiếp nhận nền y khoa tiên tiến nhưng không có điều kiện hoặc thời gian sang Nhật Bản
2 Thực hiện
● Nhóm phát triển ứng dụng di động Flutter của Hopee
● Thực tập sinh: Nguyễn Võ Đức Thắng.
● Người hướng dẫn: Hoàng Văn Lâm.
3 Kế hoạch
3.1 Giai đoạn 1
● Đọc, tìm hiểu các tài liệu khởi tạo của dự án
● Đọc, tìm hiểu bản thiết kế UI/UX của ứng dụng
● Đọc, tìm hiểu các framework, thư viện liên quan của dự án
3.2 Giai đoạn 2
● Tham gia chính thức vào dự án với quy trình làm việc, tham gia họp kế hoạch với khách hàng
● Nhận các nhiệm vụ phù hợp với năng lực
● Nhận đánh giá và hướng dẫn từ cấp trên trực tiếp
● Sửa các lỗi phát sinh (nếu có) trong quá trình demo sản phẩm cho khách hàng
Trang 143.3 Giai đoạn 3
● Đánh giá kết quả thực tập
● Hoàn thành tài liệu thực tập
9
Trang 15TỔNG KẾT
Như vậy, trong 2 tháng thực tập tại công ty TNHH Hopee, em đã lần đầu tiên được tham gia vào phát triển một dự án thực tế, hiểu được các quy trình làm việc trong công ty Bên cạnh đó, em cũng đã tiếp thu được rất nhiều kiến thức bổ ích và trau dồi thêm cho mình nhiều kỹ năng cần có để hỗ trợ cho công việc của mình sau này
Em xin chân thành gửi lời cảm ơn đến chị Phạm Thị Hoài Chi, anh Hoàng Văn Lâm và tất cả các anh chị trong nhóm phát triển dự án đã giúp đỡ và hỗ trợ em rất nhiều và nhiệt tình trong suốt thời gian em thực tập và làm việc tại Hopee
Một lần nữa, em xin trân trọng cảm ơn Công ty TNHH Hopee đã cho em cơ hội và tạo điều kiện rất tốt để cho em được làm việc và phát triển tại công ty Cảm ơn các quý thầy
cô của trường Đại học Công nghệ thông tin, đặc biệt là các thầy cô trong khoa Công nghệ phần mềm đã hỗ trợ em trong quá trình tìm việc, thực tập và quá trình hoàn thiện báo cáo này