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

phát triển ứng dụng di động 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 (1.41 MB, 26 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>BÁO CÁO THỰC TẬP </b>

<b>Phát triển ứng dụng di động với Flutter </b>

<b>Công ty thực tập : Golden Owl Solutions Người phụ trách : Nguyễn Cơng Hoan </b>

<i><b>TP. Hồ Chí Minh, tháng 12 năm 2023 </b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI MỞ ĐẦU </b>

Trong bối cảnh ngày nay, khi công nghệ ngày càng đóng vai trị quan trọng trong sự phát triển của xã hội và doanh nghiệp, việc áp dụng các cơng nghệ mới nhằm tối ưu hóa quy trình làm việc cũng như cung cấp trải nghiệm người dùng tốt nhất là không thể phủ nhận. Trong khn khổ của chương trình thực tập doanh nghiệp, em đã có cơ hội trải nghiệm và đóng góp cho q trình phát triển ứng dụng sử dụng framework Flutter.

Trong mơi trường ngày càng địi hỏi sự linh hoạt và hiệu quả, việc áp dụng công nghệ mới để phát triển ứng dụng di động trở thành một thách thức đầy thú vị. Framework Flutter, với ưu điểm độc đáo về tính đa nền tảng và khả năng tương thích cao, đã thu hút sự quan tâm của nhiều nhà phát triển. Qua thời gian thực tập, em đã có cơ hội làm việc trực tiếp trên các dự án sử dụng Flutter, từ đó tích luỹ được nhiều kinh nghiệm quý báu và kiến thức sâu rộng về quá trình phát triển ứng dụng di động.

Báo cáo này sẽ cung cấp một cái nhìn tổng quan về quá trình thực tập của em tại công ty Golden Owl, bao gồm mục tiêu và phạm vi của dự án, các công nghệ và công cụ được sử dụng, cũng như những thách thức và giải pháp mà em đã đối mặt. Hy vọng rằng thơng qua bản báo cáo này, em có thể chia sẻ những học thức quý báu và đóng góp một góc nhìn mới cho những ai quan tâm đến lĩnh vực phát triển ứng dụng di động và framework Flutter.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Thứ hai, em muốn bày tỏ lịng biết ơn đến cơng ty Golden Owl Solutions.Việc thực tập tại công ty đã mang lại cho em một trải nghiệm thực tế và giúp em áp dụng những kiến thức đã học vào dự án thực tế. Em đã được làm việc trong một môi trường năng động và sáng tạo, nơi em được khuyến khích để đóng góp ý kiến và học hỏi từ đồng nghiệp.

Cuối cùng, em xin chân thành cảm ơn tất cả những người đã đồng hành và hỗ trợ em trong thời gian thực tập. Đây không chỉ là một kỳ thực tập mà còn là một chặng đường học tập quan trọng, và em tự hào được làm một phần của Golden Owl Solutions.

Lời cảm ơn này không đủ diễn đạt lòng biết ơn sâu sắc của em. Hy vọng rằng sự hợp tác giữa chúng ta sẽ tiếp tục và mang lại những cơ hội mới trong tương lai.

TP. HCM, ngày 31 tháng 12 năm 2023

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>MỤC LỤC </b>

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

1. Giới thiệu công ty Golden Owl Solutions ... 8

2. Môi trường làm việc ... 8

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

Chương 2: Nội dung thực tập ... 12

1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ... 12

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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

TÀI LIỆU THAM KHẢO ... 26

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

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

<b>1. Giới thiệu công ty Golden Owl Solutions </b>

Công ty Golden Owl Solutions được thành lập vào năm 2015 và hoạt động trong lĩnh vực IT Outsource, chuyên phát triển website và ứng dụng di động với công nghệ mới nhất như Ruby on Rails, JavaScript, Laravel, Python, Golang, Flutter… cho các đối tác là khách hàng từ Singapore, Úc, Anh và các quốc gia nói tiếng Anh trên thế giới.

Trải qua q trình xây dựng và phát triển, Cơng ty Golden Owl Solutions không những đã tạo dựng được vị thế vững chắc trên thị trường, giá trị kinh tế và niềm tin đối với khách hàng, mà còn tạo ra môi trường làm việc năng động và tiến bộ cho nhân viên Golden Owl Solutions.

<b>2. Môi trường làm việc </b>

Môi trường làm việc ở Golden Owl Solutions năng động, sáng tạo, ln hịa đồng vui vẻ, mọi người đều rất sẵn lịng giúp đỡ nhau trong cơng việc và cuộc sống. Ở đây ln có tơn chỉ chia sẻ kiến thức, kinh nghiệm cho tất cả mọi người sẽ giúp gắn kết mọi người lại với nhau. Mỗi tuần đều có các buổi seminar chia sẽ kiến thức từ các team khác nhau trong công ty.

<b>3. Sản phẩm của công ty 3.1. Pace </b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Pace là một phương thức thanh toán trực tuyến được sử dụng trong ngành công nghiệp thương mại điện tử. Đây là một tiện ích thanh tốn cho các nền tảng thương mại điện tử phổ biến như WooCommerce và OpenCart. Mơ hình kinh doanh của họ có hai phần: một cổng thông tin thương nhân nơi quản trị viên có thể theo dõi các giao dịch của thương nhân và một cổng thanh toán hoặc plugin cho các nền tảng thương mại điện tử. Golden Owl đã hỗ trợ họ trong việc phát triển và duy trì trang web của họ, cho phép người dùng quản lý tất cả các giao dịch thanh toán của họ và quản trị viên tăng cường tỷ lệ chuyển đổi và kích thước giỏ hàng cho doanh nghiệp của họ, sử dụng React Native, ReactJS và PHP. Trong phiên bản 2.0, chúng tôi tiếp tục hợp tác với họ để chuyển đổi ứng dụng từ React Native sang Android và iOS Native.

<b>3.2. Mosendo </b>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Mosendo là ứng dụng di động ví tiền điện tử, nơi mọi người có thể dễ dàng và an tồn nạp/rút/gửi tiền giữa các tài khoản tiền điện tử của họ. Khả năng truy cập vào tiền và tài sản mà không bị giới hạn, với các cơng cụ tài chính cá nhân phi tập trung. Chúng tôi đã hỗ trợ xây dựng ứng dụng này, tuân thủ đầy đủ các yêu cầu cho một ví tiền điện tử an tồn khi vẫn còn nhiều trường hợp gian lận trong thị trường số.

<b>3.3. WeSolo - Travel App </b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Cade và Tiana, hai người đi bộ độc lập gặp nhau tại Seoul, là nguồn cảm hứng cho WeSolo. Họ tin rằng khơng có ứng dụng nào đáp ứng đủ tất cả các yêu cầu của họ như những người du lịch lâu dài, do đó WeSolo ra đời sau nhiều suy nghĩ. Mục tiêu của họ là hỗ trợ du khách kết nối với nhau, tạo ra những mối quan hệ bạn bè kéo dài suốt đời. Quan trọng nhất, WeSolo khuyến khích du lịch an tồn và thú vị.

<b>4. Lịch làm việc khi thực tập tại công ty </b>

Em tham gia làm việc tại công ty bắt đầu từ ngày 06/09/2023 tới 06/12/2023, các ngày làm việc trong tuần là từ thứ 2 đến thứ 6. Công việc hằng ngày bắt đầu từ lúc 09h00 đến 18h00. Thời gian nghỉ trưa từ 12h30 đến 13h30. Sau mỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câu hỏi và nhận chia sẻ, giải đáp từ anh hướng dẫn, đặt mục tiêu cho ngày làm việc tiếp theo. Mỗi tuần sẽ họp tiến độ tuần 1 lần vào chiều thứ 4, mọi người sẽ cùng họp và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bài học, giải pháp và mục tiêu cho tuần tiếp theo. Mỗi tuần sẽ tổ chức Seminar cho cả team vào buổi họp để chia sẻ kiến thức, kinh nghiệm và công nghệ mới cho cả team.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>Chương 2: Nội dung thực tập </b>

<b>1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty </b>

<i><b>Thời gian: 1 ngày </b></i>

<i><b>Nội dung: Giới thiệu về công ty, cách tổ chức của công ty </b></i>

Được nghe phòng nhân sự giới thiệu về công ty và các sản phẩm Outsource cũng như Product của cơng ty, q trình thành lập và phát triể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. Được Mentor giới thiệu với các thành viên trong Team và quá trình thực tập tại cơng ty.

Ngồi ra, em 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…

<i><b>Kết quả: Hiểu thêm về công ty Golden Owl và các sản phẩm, q trình thành lập và phát </b></i>

triển. Có thêm các kỹ năng về việc sử dụng email và các phần mềm liên quan trong cơng việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn.

<i><b>2. Nghiên cứu kỹ thuật </b></i>

<b>2.1. Công cụ sử dụng </b>

<i><b>Thời gian: 1 ngày </b></i>

<i><b>Nội dung: Giới thiệu về một số công cụ được sử dụng trong công ty. Các công cụ bao gồm: </b></i>

Trình gửi email (Gmail), hệ thống quản lý công việc, hệ thống chấm công, hệ thống liên lạc, hệ thống lưu trữ nội bộ, hệ thống báo cáo công việc hằng ngày, hệ thống làm việc từ xa:

- Gitlab, Github, Source Tree: là công cụ để quản lý source code - Android Studio, VS Code, Xcode: là công cụ để phát triển ứng dụng

- Telegram, Slack: là công cụ quản lý tin nhắn giữa các cá nhân ,cũng như toàn thể cơng ty, các thành viên có thể gọi, nhắn tin, trao đổi và chia sẻ dữ liệu cho nhau. - Trello và Google Sheet: là công cụ để quản lý task và project, theo dõi các vấn đề

và tiến trình dự án.

- Slack: là cơng cụ để báo cáo tiến độ hoàn thành task trong ngày.

- Email: được cung cấp bởi google được sử dụng để thông báo các thay đổi chính sách, các sự kiện, dự án sắp tới của cơng ty đến tồn thể nhân viên.

- Google meeting: phục vụ cho việc làm việc online và họp giữa các cơ sở trong công ty.

- Comana: Quản lý ngày nghỉ của nhận viên

<i><b>Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên. </b></i>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<i><b>Kết quả : Kết thúc thời gian tìm hiểu, em đã có hiểu biết sơ bộ cũng như cách thức sử dụng </b></i>

các phần mềm và hệ thống được dùng trong nội bộ công ty. Tạo điều kiện cho thực tập sinh có thể giao tiếp hiệu quả hơn với người hướng dẫn.

<b>2.2. Framework </b>

<i><b>Thời gian: 1,5 tuần </b></i>

<i><b>Nội dung: Được giới thiệu về ngơn ngữ lập trình Dart và Flutter Framework, những kiến </b></i>

thức quan trọng cho việc tối ưu hóa hiệu năng cho các ứng dụng di động. - Các cú pháp, câu lệnh cơ bản trong Dart.

- Các quy ước, tiêu chuẩn và hướng dẫn phát triển ứng dụng Flutter - Làm quen với lập trình Flutter.

- Làm các bài tập lập trình đơn giản với ngôn ngữ Dart

- Xây dựng ứng dụng Flutter cơ bản (Flutter Gallery) và đưa lên cửa hàng CH Play

<i><b>Thực hiện: Tham gia đầy đủ các buổi training và thực hành theo hướng dẫn của mentor Kết quả: Hiểu sâu hơn về ngôn ngữ Dart và Flutter Framework </b></i>

<b>2.3. Clean Architecture </b>

<i><b>Thời gian: 2 ngày </b></i>

<i><b>Nội dung: Các nguyên tắc để xây dựng 1 dự án Flutter áp dụng Clean Architecture. Clean </b></i>

Architecture là một kiến trúc ứng dụng rất nổi tiếng dựa trên nguyên lý loại bỏ sự lệ thuộc giữa các đối tượng cũng như các layer trong ứng dụng. Với các dự án lớn, việc áp dụng sẽ giúp chia để trị task dễ dàng. Maintain, mở rộng, unit test cũng sẽ dễ áp dụng theo.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Hình 1: Clean Architecture </i>

<i>Hình 2: Clean Architecture kết hợp BLoc </i>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<i><b>Thực hiện: Tìm hiểu về Clean Architecture </b></i>

<i><b>Kết quả: Cơ bản nắm được và xây dựng code base dựa trên Clean Architecture trong Flutter </b></i>

<b>2.4. CI/CD </b>

<i><b>Thời gian: 2 ngày </b></i>

<i><b>Nội dung: Tìm hiểu về cú pháp, cách triển khai Fastlane và github action vào trong dự án </b></i>

Flutter để tự động phát hành ứng dụng lên store khi có những cập nhật.

<i><b>Thực hiện: Tự tìm hiểu và thực hành đưa vào dự án </b></i>

<i><b>Kết quả: Áp dụng và hoàn thành dự án cá nhân trong quá trình training </b></i>

<b>3. Thực hiện dự án cá nhân </b>

Sau gần 3 tuần được training và thực hành, em đã nắm được những kiến thức cơ bản về Dart, Flutter, Clean Architecture, CI/CD. Sau đó em được tự chọn cho mình ý tưởng ứng dụng để thực hiện project cá nhân. Và dự án cá nhân được phê duyệt đó là ứng dụng mang tên Jobspot. Đây là ứng dụng đăng tuyển việc làm giúp kết nối các nhà tuyển dụng và ứng viên với nhau. Ở đây họ có thể đăng tin tuyển dụng và tương tác ứng tuyển ngay trên nền tảng giúp tiết kiệm thời gian và chi phí.

<b>3.1. Cơng nghệ </b>

Mobile: Flutter

- Flutter là một framework phát triển ứng dụng di động đa nền tảng của Google, sử dụng ngôn ngữ Dart. Nổi bật với "hot reload" giúp phát triển nhanh chóng, Flutter tạo ra giao diện đẹp và trải nghiệm người dùng nhất quán trên cả iOS và Android. Được ưa chuộng trong cộng đồng nhà phát triển, Flutter đang trở thành lựa chọn hàng đầu cho phát triển ứng dụng di động hiện đại.

Back-end: Flask + Firebase

- Firebase là nền tảng của Google cung cấp các dịch vụ như cơ sở dữ liệu realtime, xác thực người dùng, lưu trữ tệp, và chức năng serverless. Được ưa chuộng trong phát triển ứng dụng di động, Firebase giúp đơn giản hóa q trình phát triển và quản lý ứng dụng.

- Flask là một framework web Python nhẹ, được sử dụng để xây dựng các ứng dụng web. Được biết đến với cấu trúc đơn giản và linh hoạt, Flask cung cấp một môi trường phát triển thuận tiện cho việc xử lý yêu cầu HTTP, quản lý routing, và tạo

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

giao diện người dùng thông qua các template. Trong ứng dụng này chủ yếu để tích hợp API của Open AI phục vụ cho việc tóm tắt CV.

<b>3.2. Mơ tả dự án </b>

<b>Mức độ hoàn thành </b>

<b>1 </b>

Thực hiện setup project (CI/CD, kết nối Firebase, …), triển khai giao diện và chức năng liên quan đến tài khoản người dùng như đăng ký, đăng nhập, quên mật khẩu, phân quyền người dùng, xác thực tài khoản,….

<b>2 </b>

Triển khai các tính năng liên quan đến tuyển dụng như quản lý bài tuyển dụng, ứng tuyển công việc, bài test IQ, …

<b>3 </b>

Triển khai các tính năng liên quan đến phần mạng xã hội trong ứng dụng như quản lý bài viết, quản lý tương tác, chia sẻ sang các nền tảng khác, thơng báo trong và ngồi ứng dụng, …

<b>4 </b>

Phát triển thêm các tính năng nâng cao như sử dụng API của Open AI để tóm tắt CV người dùng, viết unit test, fix bug còn tồn tại trong ứng dụng và chuẩn bị để demo ứng dụng với BOD

<b>3.2.1. Tuần 1 </b>

Trong tuần đầu tiên trong quá trình triển khai dự án, em tập trung chủ yếu vào việc thiết lập dự án, triển khai liên tục (CI/CD), và kết nối với Firebase. Ngoài ra, em cũng đã triển khai giao diện và các chức năng quan trọng liên quan đến quản lý tài khoản người dùng.

- Đầu tiên, em đã thực hiện việc thiết lập dự án, bao gồm cấu hình mơi trường phát triển, thiết lập kho lưu trữ dự án và các cấu hình khác.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

- Tiếp theo, thực hiện việc kết nối dự án với Firebase, bao gồm cấu hình tài khoản và tích hợp Firebase SDK vào mã nguồn dự án.

- Em cũng đã tích hợp quy trình liên tục và triển khai liên tục (CI/CD) bao gồm fastlane và github action để tự động hóa quá trình triển khai mã nguồn từ mơi trường phát triển đến môi trường sản xuất.

- Các bước kiểm thử tự động và báo cáo lỗi đã được tích hợp trong quy trình CI/CD để đảm bảo chất lượng mã nguồn.

- Em thực hiện việc triển khai giao diện người dùng, đảm bảo trải nghiệm người dùng mượt mà và thân thiện.

- Các chức năng quan trọng liên quan đến tài khoản người dùng đã được triển khai, bao gồm:

• Đăng ký: Người dùng có thể tạo tài khoản mới với 2 vai trị là nhà ứng tuyển và ứng viên với thơng tin cá nhân.

• Đăng nhập: Q trình đăng nhập được xử lý an tồn và hiệu quả.

• Quên mật khẩu: Chức năng này cho phép người dùng đặt lại mật khẩu khi quên. • Phân quyền người dùng: Xác định quyền hạn và quyền truy cập của người dùng

- Giao diện quản lý bài tuyển dụng được tối ưu hóa để đơn giản hóa q trình đăng thơng tin và theo dõi trạng thái của các bài tuyển dụng

- Tích hợp tính năng ứng tuyển cơng việc, giúp ứng viên dễ dàng nộp đơn và tương tác với quá trình tuyển dụng.

- Quy trình ứng tuyển được thiết kế để giúp người dùng trải nghiệm tốt nhất và cung cấp thông tin cần thiết cho nhà tuyển dụng.

- Một tính năng quan trọng khác triển khai là bài test IQ, giúp đánh giá kỹ năng và khả năng của ứng viên.

<b>3.2.3. Tuần 3 </b>

Một trong những tính năng quan trọng trong tuần này là triển khai tính năng quản lý bài viết trong ứng dụng. Điều này cho phép người dùng tạo, chỉnh sửa và xóa bài viết của mình một cách dễ dàng, tạo nên một không gian chia sẻ thông tin linh hoạt và thú vị.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Em đã tích hợp tính năng quản lý tương tác để người dùng có thể tương tác với bài viết của người khác thông qua like, comment, và chia sẻ. Điều này giúp tạo ra một cộng đồng năng động và tương tác.

Để mở rộng tầm ảnh hưởng của ứng dụng, em đã triển khai tính năng chia sẻ bài viết từ ứng dụng sang các nền tảng xã hội khác như Facebook, Twitter và LinkedIn. Điều này tạo ra một cách hiệu quả để người dùng lan truyền thông điệp của mình.

Em đã tích hợp hệ thống thơng báo để thông báo sự tương tác mới và các bài viết quan trọng trong ứng dụng. Thông báo này không chỉ giúp người dùng duy trì kết nối với nội dung mà còn tăng cường trải nghiệm sử dụng.

<b>3.2.4. Tuần 4 </b>

Một trong những tính năng nâng cao đáng chú ý là việc tích hợp API của Open AI để tổng hợp thông tin từ CV của người dùng. Điều này giúp tạo ra một tóm tắt chính xác và rõ ràng về kỹ năng và kinh nghiệm, mang lại giá trị cao cho người dùng trong quá trình tìm kiếm việc làm.

Em đã được mentor hướng dẫn thực hiện việc viết các unit test để đảm bảo tính ổn định và độ tin cậy của mã nguồn. Các unit test này giúp em phát hiện và khắc phục sớm những vấn đề có thể xảy ra, đồng thời giảm thiểu rủi ro khi triển khai các bản cập nhật.

Em đã tập trung vào việc sửa chữa các lỗi còn tồn tại trong ứng dụng, đặc biệt là những lỗi được thông báo từ các anh trong team hoặc được phát hiện trong quá trình kiểm thử. Việc này nhằm đảm bảo rằng ứng dụng hoạt động mượt mà và ổn định hơn.

Em đã tiến hành chuẩn bị kỹ lưỡng để thực hiện một buổi demo ứng dụng với Ban Điều Hành (BOD). Điều này bao gồm việc tạo ra các kịch bản demo, chuẩn bị dữ liệu và đảm bảo rằng mọi tính năng được trình bày một cách đầy đủ và hiệu quả.

<b>3.3. Kết quả </b>

Qua quá trình triển khai dự án ứng dụng Jobspot bằng Flutter, em đã có được một kinh nghiệm quý báu và rút ra nhiều bài học quan trọng. Đầu tiên và quan trọng nhất, dự án đã giúp em phát triển kỹ năng lập trình Flutter và làm quen với môi trường phát triển ứng dụng di động.

Trong quá trình xây dựng chức năng đăng ký, đăng nhập, và quản lý thông tin cá nhân, em đã học được cách tích hợp các tính năng bảo mật như mã hóa mật khẩu và xác thực người dùng. Điều này đã mở rộng hiểu biết của em về quản lý thông tin người dùng và đảm bảo an toàn cho dữ liệu cá nhân.

</div>

×