Chương 2: Nội dung thực tập Đợt thực tập với chủ đề “Lập trình Flutter trên Android” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình với framework Flutter để t
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 ANDROID
Công ty thực tập : Công ty cổ phần KiteMetric Người phụ trách : Phạm Hoàng Hải
Thực tập sinh : Trần Lê Bảo Châu
TP Hồ Chí Minh, tháng 6 năm 2022
Trang 2LỜI MỞ ĐẦU
Ở thời điểm bùng phát thông tin như hiện tại, thiết bị di động gần như trở thành một phần không thể thiếu trong cuộc sống của con người Thiết bị di động hiện tại đang phát triển với một tốc độ vô cùng mạng mẽ, mà kéo theo đó là sự phát triển “chóng mặt” của các ứng dụng di động
Hòa chung với sự phát triển ấy, nhiều công ty tại Việt Nam cũng tham gia vào cuộc đua phát triển ứng dụng trên thiết bị di động KiteMetric cũng là một trong số ấy Không chỉ phát triển ứng dụng trên những framework cũ, công ty còn đang đặt chân vào sử dụng một framework mới là Flutter, một framework đang được phát triển bởi Google trong thời gian gần đây Do đó, em nghĩ đây là một môi trường năng động, tiếp thu cái mới, thuận lợi để giúp đỡ
em bước đầu trên con đường phát triển ứng dụng di động với Flutter
Trang 3LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty KiteMetric Việt Nam đã 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 bằng Flutter 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 thầy Phạm Hoàng Hải, đã training Flutter, Dart, boilerplate, 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, … để có thể làm ra một sản phẩm trong thời gian qua
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
Trần Lê Bảo Châu
TP HCM, ngày 15 tháng 06 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
Chương 1: Giới thiệu công ty thực tập 5
1 Giới thiệu công ty KiteMetric 5
2 Sản phẩm của công ty 5
Chương 2: Nội dung thực tập 7
1 Nghiên cứu kỹ thuật 7
1.1 Nghiên cứu công cụ, quy trình 7
1.2 Nghiên cứu ngôn ngữ, template 8
2 Thực hiện project 9
3 Lịch làm việc 9
Chương 3: Chi tiết về project 12
1 Giới thiệu về project 12
1.1 Yêu cầu chức năng 12
1.2 Yêu cầu phi chức năng 12
2 Thực hiện 12
3 Kế hoạch 12
TÀI LIỆU THAM KHẢO 15
Trang 6Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty KiteMetric
KiteMetric là công ty tư vấn công nghệ được thành lập từ năm 2012 với sứ mệnh hỗ trợ các doanh nghiệp khởi nghiệp chuyển đổi ý tưởng thành sản phẩm chất lượng cao Công ty đã và đang hợp tác với khách hàng trên toàn thế giới để cung cấp các sản phẩm trong nhiều lĩnh vực khác nhau bao gồm: ứng dụng học máy, trực quan hóa dữ liệu, mạng xã hội, ứng dụng fintech, và nhiều lĩnh vực khác
các sản phẩm hiệu suất cao với trải nghiệm người dùng tuyệt vời trên tất cả các nền tảng
động hóa các hoạt động thủ công, cải thiện hoạt động kinh doanh với trí thông minh theo hướng dữ liệu
các khái niệm để xác thực ý tưởng và đưa ra thiết kế UI / UX sáng tạo mang lại tính độc đáo của bất kỳ sản phẩm nào
- Về Technology Consulting: cung cấp dịch vụ giúp định hình ý tưởng, xác định các rào cản kỹ thuật, đề xuất các giải pháp và công nghệ phù hợp
2 Sản phẩm của công ty
Hai trong số những sản phẩm nổi bật của công ty có thể kể đến là Blanket và FaceSwap
Trang 7- Blanket: một ứng dụng dành cho thiết bị di động áp dụng nhiều thuật toán để thực hiện nhiệm vụ, đo lường và khen thưởng hiệu suất của nhân viên, đồng thời, giúp tăng cường hiệu quả trong quản lý nhà hàng và hoạt động hàng ngày của họ
Trang 8- FaceSwap: ứng dụng thú vị cho phép người dùng thay thế khuôn mặt nhân vật nổi tiếng trong ảnh bằng khuôn mặt của họ bằng cách sử dụng một bức ảnh duy nhất
từ máy ảnh Ứng dụng này có sẵn trên cả Android và iOS với hơn một nửa triệu người dùng
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình Flutter trên Android” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình với framework Flutter để tạo ứng dụng di động, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp
1 Nghiên cứu kỹ thuật
1.1 Nghiên cứu công cụ, quy trình
Thời gian : 1 tuần
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, mô
hình làm việc dự kiến
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 trong số đó như Jira -
sử dụng trong làm việc nhóm, Github – công cụ quản lý phiên bản code, Android
Trang 9studio - IDE cho việc phát triển ứng dụng di động, Figma – công cụ thiết kế giao diện người dùng
Bên cạnh đó, thực tập sinh còn được tìm hiểu về mô hình làm việc Scrum
Tìm hiểu tổng quan về dự án ứng dụng kết nối camera IP
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên và tìm hiểu về Scrum Kết quả :
các phần mềm nêu trên
1.2 Nghiên cứu ngôn ngữ, template
Thời gian : 2 tuần
Nội dung: Ngôn ngữ lập trình Dart, một số khái niệm trong Flutter, template
boilerplate
- Ngôn ngữ lập trình Dart:
Dart là ngôn ngữ lập trình mới, được phát triển bởi Google, hiện đã được chấp thuận bởi tổ chức Ecma Dart được sử dụng để xây dựng các loại ứng dụng: web, server, di động (IOS và Android với công cụ Flutter)
Dart là ngôn ngữ hỗ trợ lập trình hướng đối tượng, cú pháp kiểu C, mã code Dart có thể biên dịch thành JavaSript để chạy trên trình duyệt Nó hỗ trợ những khái niệm lập trình hiện đại như giao diện lớp, lớp trừu tượng
Cách khai báo biến, xây dựng hàm,
- Một số khái niệm trong Flutter:
Tìm hiểu một số khái niệm trong Flutter gồm:
• Widget (Stateless Widget, Statefull Widget, Accessibility, Inherited Widget)
• Assets
• Static User Interface
• 3rd Party Libraries
Trang 10- Template boilerplate
được xây dựng sẵn kết hợp giữa MobX và Provider
Thực hiện :
- Tìm kiếm các tài liệu trên mạng
- Seminar lại với nhóm và tiếp thu ý kiến đóng góp từ các thành viên khác
- Nghe và góp ý seminar của các thành viên khác
Kết quả :
- Hiểu được những khái niệm cơ bản trong lập trình với framework Flutter và ngôn ngữ Dart
- Hiểu được cấu trúc template boilerplate
2 Thực hiện project
Sau gần 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ề quy trình Scrum và ngôn ngữ Dart, framwork Flutter, template boilerplate Trong tháng thứ hai, 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 ứng dụng di động trên Android
Chi tiết đồ án sẽ được nói ở phần sau
3 Lịch làm việc
Trang 11Tuần Công việc Người hướng dẫn
Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1
Sprint 1:
- Làm quen với các công cụ làm việc trong công ty như
Android Studio
- Học cách trao đổi, làm việc qua email
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
2
Sprint 2:
- Tìm hiểu và báo cáo Flutter
- Tìm hiểu và báo cáo ngôn ngữ Dart
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
3
Sprint 3:
- Tìm hiểu và báo cáo ngôn ngữ Dart (tiếp theo)
- Tìm hiểu và báo
boilerplate
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
4
Sprint 4:
- Phân tích yêu cầu ứng dụng
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
5
Sprint 5:
- Thiết kế UI/UX của ứng dụng (giao diện xem 1 camera, giao
camera, giao diện thêm camera và một
ứng)
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
6
Sprint 6:
- Chỉnh sửa thiết kế UI/UX
- Khởi tạo project
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
Trang 12- Xây dựng giao diện (thêm camera)
Hải, Thầy Nguyễn Tấn Trần Minh Khang
8
Sprint 8:
- Kiểm thử và chỉnh sửa một số lỗi giao diện
- Thực hiện đa ngôn ngữ cho ứng dụng (tiếng Anh và tiếng Việt)
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
9
Sprint 9:
- Xây dựng cơ sở dữ liệu theo template boilerplate
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
10
Sprint 10:
năng thêm camera (chưa check thông tin camera)
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
11
Sprint 11:
- Thực hiện check thông tin camera
camera
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
12
Sprint 12:
thiện ứng dụng
Thầy Phạm Hoàng Hải, Thầy Nguyễn Tấn Trần Minh Khang
Trang 13Chương 3: Chi tiết về project
1 Giới thiệu về project
Dự án thực tập của nhóm là thực hiện một ứng dụng di động có khả năng kết nối và stream hình ảnh từ camera IP ở xa
1.1 Yêu cầu chức năng
Ứng dụng cho phép người dùng nhập thông tin để liên kết với camera IP thông qua giao thức RTSP (giao thức thường dùng để stream video từ camera), sau đó ứng dụng sẽ lưu lại thông tin camera để người dùng có thể xem camera vào lần sau mà không cần phải nhập lại thông tin Ngoài ra, ứng dụng còn hỗ trợ người dùng xem nhiều camera một lúc (nhóm camera)
1.2 Yêu cầu phi chức năng
Sử dụng framework Flutter với template boilerplate, đảm bảo ứng dụng thích ứng được với tất cả các giao diện di động
2 Thực hiện
4 thành viên của team internship:
- Trần Lê Bảo Châu
- Phan Thị Hồng Cúc
- Đoàn Thị Thanh Hiếu
- Trần Văn Bảo
Và sự giúp đỡ tận tình của team trainer
3 Kế hoạch
Sprint 4:
Kết quả: Thông tin yêu cầu chức năng và phi chức năng
Sprint 5:
o Trang chủ
Trang 14o Giao diện xem 1 camera
o Giao diện xem nhiều camera
o Giao diện danh sách
o Giao diện thêm camera
o Popup thông báo
o Popup điền thông tin
Kết quả: Hoàn thành sơ bộ thiết kế giao diện cho ứng dụng
Sprint 6:
- Khởi tạo project
Kết quả: Hoàn thành thiết kế giao diện
Sprint 7:
- Xây dựng các giao diện đã thiết kế
Kết quả: Hoàn thành sơ bộ các giao diện đã thiết kế
Sprint 8:
- Kiểm thử và chỉnh sửa một số lỗi giao diện
- Thiết kế cơ sở dữ liệu
Kết quả: Hoàn thành các giao diện như thiết kế và xây dựng được bản thiết kế cơ sở dữ liệu cho
ứng dụng
Sprint 9:
- Xây dựng cơ sở dữ liệu theo template boilerplate
Kết quả: Xây dựng được cơ sở dữ liệu trong project theo template boilerplate
Sprint 10:
Trang 15- Thực hiện chức năng thêm/sửa/xóa camera và nhóm camera
Kết quả: Thực hiện liên kết cơ sở dữ liệu với các giao diện hiện có và các chức năng
thêm/sửa/xóa, cập nhật giao diện cho phù hợp, tuy nhiên vẫn còn tồn tại một số lỗi
Sprint 11:
- Thực hiện kiểm tra thông tin trước các thao tác thêm/sửa/xóa
- Thêm gợi ý tên cho các trường đặt tên
Kết quả: Thực hiện một số thao tác kiểm tra thông tin và một số hỗ trợ cho người dùng, tuy
nhiên vẫn còn tồn tại một số lỗi
Sprint 12:
Kết quả: Ứng dụng cơ bản hoàn thiện, tuy nhiên vẫn tồn tại một số lỗi
Trang 16TÀI LIỆU THAM KHẢO
For Flutter:
https://flutter.dev/
For Dart:
https://xuanthulab.net/lap-trinh-dart-flutter/
https://dart.dev/
https://www.tutorialspoint.com/dart_programming/index.htm
For boilerplate:
https://github.com/zubairehman/flutter-boilerplate-project
Trang 17TỔNG KẾT
Như vậy, chỉ trong vòng hai tháng ngắn ngủi, nhóm đã sơ bộ hoàn thành một ứng dụng android bằng framework Flutter Ứng dụng đã cơ bản đạt được những yêu cầu được đề ra ban đầu dù vẫn còn một vài sai sót
Chân thành cảm ơn sự giúp đỡ của các anh chị nhóm trainer KiteMetric, sự nỗ lực của các bạn cùng nhóm để có thể hoàn thành ứng dụng này Cảm ơn thầy Nguyễn Tấn Trần Minh Khang và thầy Phạm Hoàng Hải đã giúp em hoàn thành bài báo cáo này