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

báo cáo thực tập flutter developer

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.61 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 TINKHOA CƠNG NGHỆ PHẦN MỀM</b>

BÁO CÁO THỰC TẬP

<b>Flutter Developer</b>

Cơng ty thực tập:Document EasyNgười phụ trách:Trần Quang VinhThực tập sinh:Vũ Bảo Châu

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

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

Dưới cuộc cách mạng công nghiệp 4.0, ứng dụng di động giờ đây đãtrở thành một phần không thể thiếu trong sự phát triển của toàn xãhội.

Đi cùng với sự phát triển mạnh mẽ của ngành công nghiệp phone, các ứng dụng di động cũng ngày càng trở nên phổ biến vàđóng góp một phần không nhỏ trong cuộc sống của mọi người. Sốlượng các ứng dụng di động trên các chợ ứng dụng ngày càng tăngkéo theo đó là sự phát triển đa dạng về hình thức cũng như chấtlượng của ứng dụng.

Smart-Với sự cạnh tranh đó, một ứng dụng di động muốn được nhiều ngườisử dụng khơng chỉ địi hỏi cao về hình thức mà cịn đặt ra thách thứcvề trải nghiệm người dùng và tính linh hoạt. Việc tạo ra một ứngdụng đảm bảo được những yếu tố trên luôn là vấn đề nan giải củabất kỳ đội ngũ phát triển ứng dụng di dộng nào. Với quyết tâmkhông ngừng học hỏi và mong muốn thử thách bản thân trongngành công nghiệp này, em đã lựa chọn Flutter developer là địnhhướng cho việc học tập cũng như nghề nghiệp trong tương lai.

Sau thời gian rèn luyện và học tập tại trường đại học, với mongmuốn áp dụng kiến thức đã học và có được sự trải nghiệm thực tế,

<b>em đã quyết định tham gia vào Document Easy - một môi trường</b>

tuyệt vời cho việc thực hiện ý tưởng và phát triển bản thân.

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

<b>LỜI CẢM ƠN</b>

<b>Em xin trân trọng gửi lời cảm ơn Document Easy đã tạo điều kiện</b>

cho em cơ hội được thực tập tại công ty. Dù trong thời gian ngắnnhưng nhờ sự chỉ dẫn nhiệt tình của anh Trần Quang Vinh, em đãtiếp thu những kiến thức quan trọng để có thể tham gia một dự ánthực tế.

Chân thành cảm ơn các anh chị trong team đã bỏ ra nhiều thời gian,công sức để hướng dẫn, hướng dẫn, giúp đỡ em tận tình trong khilàm quen mơi trường mới cũng như trong việc tiếp cận kiến thứccông nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thựchiện tốt dự án cá nhân và dự án thực tế trong thời gian qua.

Em 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áo cáo này.

TP. HCM, ngày 27 tháng 12 năm2023

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

CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP...5

1.1. Giới thiệu Document Easy...5

1.2. Sản phẩm công ty...5

1.3. Lịch làm việc khi thực tập tại công ty...7

CHƯƠNG 2: NỘI DUNG THỰC TẬP...8

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

2.2. Nghiên cứu kỹ thuật...8

</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.1. Giới thiệu Document Easy</b>

<i>Hình 1.1. Logo Document Easy</i>

Document Easy là một công ty khởi nghiệp đặt trụ sở tại làng Đạihọc Quốc gia. Đây là một công ty product chuyên phát triển ứngdụng phần mềm cho hai nền tảng di động hàng đầu là App Store vàGoogle Play. Ngồi ra, cơng ty cũng dành thời gian và tâm huyết vàoviệc phát triển các trang web và nhiều phần mềm khác thông quadịch vụ outsourcing.

Tại Document Easy, con người được coi là trung tâm của mọi hoạtđộng. Công ty không chỉ cung cấp đào tạo chuyên nghiệp mà cịntạo ra một mơi trường thú vị để mỗi thành viên có thể phát triển tốiđa những kỹ năng và tiềm năng cá nhân của mình. Sứ mệnh củaDocument Easy không chỉ dừng lại ở việc tạo ra các ứng dụng xuấtsắc mà còn mơ ước xây dựng những ứng dụng được hàng triệu ngườisử dụng trên toàn cầu. Và điều đặc biệt, bạn sẽ có cơ hội để đóngdấu tên tuổi của mình trên những ứng dụng đó.

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

<b>1.2. Sản phẩm công ty</b>

<b>Alobo – Quản lý sân thể thao</b>

<i>Hình 1.2. Logo ứng dụng Alobo – Quản lý sân thể thao</i>

Alobo - Giải pháp phần mềm cho việc quản lý sân cầu lơng, sân bóngđá, sân tennis, sân cỏ nhân tạo, sân bóng mini. Ngồi ra phần mềmcòn giúp chủ sân quản lý nhân viên, chấm cơng cho từng nhân viên.Đặc biệt là quản lý tình trạng sân và tăng tỷ lệ lấp đầy sân trông từđó tăng doanh thu.

<b>Alobo – Đặt lịch sân thể thao</b>

<i>Hình 1.3. Logo ứng dụng Alobo – Đặt lịch sân thể thao</i>

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

Ứng dụng giúp khách hàng có thể đặt trước sân thể thao mà không cần phải gặp mặt trực tiếp chủ sân. Phần mềm hỗ trợ khách hàng tìm kiếm các sân thể thao, xem trạng thái của sân và theo dõi tình trạng đơn đặt lịch của mình.

<b>1.3. 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 6/7/2023 tới30/10/2023, các ngày làm việc trong tuần là: thứ 2 đến thứ 6 tronghè và 3 ngày/tuần khi vào năm học (gồm: thứ 2, sáng thứ 3, sángthứ 4, thứ 5). Công việc hằng ngày bắt đầu từ lúc 8h đến 12h chobuổi sáng và 13h30 đến 17h30 cho buổi chiều. Thời gian nghỉ trưakhoảng 1,5 tiếng. Do còn là thực tập sinh, nên công ty rất thoải máicho em trong vấn đề thời gian làm việc, hỗ trợ em linh hoạt thời gianlàm cho việc học trên trường, miễn là vẫn đảm bảo đủ số buổi làmtrong tuần. Mỗi tuần sẽ họp tiến độ tuần 1 lần vào sáng thứ 3, trongbuổi họp, em có thể trình bày ý kiến, trao đổi ý tưởng và nhậnfeedback từ các anh Vinh – mentor và các anh chị khác trong nhóm.Ngồi ra, mọi người sẽ cùng 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.

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

<b>CHƯƠNG 2: NỘI DUNG THỰC TẬP</b>

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

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 nghengười phụ trách giới thiệu về công ty, quá trình thành lập và pháttriển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức củacông ty, các phịng ban về IT, HR, … Ngồi ra, thực tập sinh cịnđược giới thiệu về văn hóa làm việc trong công ty như thời gian đilàm, các quy định, cách sử dụng email trong công việc, …

Kết quả: hiểu thêm về văn hóa cơng ty, q trình thành lập và pháttriể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.

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

Trong 2 tuần đầu, em được training về cách thức làm việc, chu trình của một dự ánthực tế. Tiếp đó là các kỹ năng liên quan đến công việc: làm quen về Jira, Git vàGithub. Cuối cùng là các kỹ năng về kỹ thuật lập trình Flutter từ cơ bản đến nâng caocần thiết cho vai trò lập trình viên Flutter.

 Tìm hiểu về mơ hình quản lý trạng thái BloC.Kết quả:

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

 Nắm được quy trình làm việc của một dự án thực tế và cách sửdụng phần mềm Jira cơ bản.

 Hiểu sâu hơn về Flutter và cách tối ưu khi sử dụng BloC. Cụthể:

o Flutter cung cấp phương thức “setState()” để cập nhật lạitrạng thái của widget (thường là các màn hình). Khi đượcgọi, flutter sẽ gọi lại phương thức build() cho các widgetđó và cả các widget con của chúng. Điều này dẫn đếnvấn đề: chỉ 1 widget con nhỏ trên màn hình cần cập nhậttrạng thái cũng khiến cho cả màn hình phải “build” lại.Gây tốn tài nguyên và giảm hiệu năng.

o Bloc cung cấp một cách thức quản lý “state” của mànhình, và chỉ “build” lại khi cần thiết (tức là nếu 1 thànhphần nhỏ cần cập nhật thì chỉ cập nhật nó, khơng buildlại tồn bộ màn hình).

o Bloc cịn giúp tách biệt phần xử lý Logic và UI khiến chocode dễ quản lý hơn.

o Việc áp dụng Bloc sẽ tạo ra các thành phần độc lập giúpdễ dàng mở rộng và phát triển. Bằng cách chia nhỏ mànhình thành các thành phần khác nhau, việc xử lý chúngtrở nên dễ dàng hơn và code trở nên dễ đọc hơn.

<b>2.2.2. Tuần 2</b>

Nội dung: Tiếp tục tìm hiểu về Flutter, ở tuần này, các kiến thức tìmhiểu được nâng cao hơn, áp dụng nhiều hơn ở dự án thực tế.

 Thực hiện gọi API từ Flutter qua thư viện Dio.

 Tìm hiểu và thực hiện lưu trữ dữ liệu local, sử dụng thư việnHive, Sqflite (kết hợp với việc gọi API, làm ứng dụng demo gọiAPI và lưu trữ dữ liệu dưới local).

 Tìm hiểu cách thức tương tác từ Flutter xuống native (Android,iOS) thông qua MethodChannel, EventChannel. Viết chương

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

trình ví dụ (Ứng dụng hiển thị phần trăm pin và trạng thái pincủa máy).

 Tìm hiểu cách tạo một Clean architect project.

 Tìm hiểu và sử dụng CustomPainter để vẽ hình lên màn hình(Làm ứng dụng vẽ hệ trục tọa độ Oxy và các hình học cơ bản).Kết quả:

 Biết cách sử dụng MethodChannel và EventChannel cho nhữngtác vụ đặc thù.

 Học được cách gọi API và xử lý lỗi.

 Nắm được cách tương tác với cơ sở dữ liệu local (cụ thể làHive).

 Nắm được cách tạo một Clean architect project. Cụ thể, việc tổchức cấu trúc thư mục của một dự án Flutter sẽ dựa trên luồnglogic của ứng dụng:

o Đầu tiên là thư mục “presentation” (hoặc “screens”): Đâylà nơi chứa thành phần tạo nên giao diện của ứng dụng(UI code), và các Logic holder của chúng (Statemanagement - Bloc).

o Tiếp đến là thư mục “repositories”: Đây là nơi chứa cáclớp Repositories và Services. Các lớp này chịu tráchnhiệm chính trong việc tương tác với APIs.

o Sau đó là thư mục “models”: Như tên gọi, đây là thư mụcchứa các files định nghĩa các lớp mơ hình, dùng để đạidiện cho dữ liệu của ứng dụng.

o Ngoài ra, tùy từng trường hợp có thể có thêm một số thưmục khác như:

 “utils”: Chứa các lớp mang các hàm tiện ích nhưđịnh dạng ngày tháng, định dạng tiền tệ, chuẩn hóaString,…

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

 “widgets”: Chứa các widget dùng chung cho cả dựán (dialog, appbar,…)

 “constants”: Lưu trữ các hằng số không đổi cho cảứng dụng (url, config, theme…)

 “extension”: Mở rộng của các lớp cơ bản của ngônngữ

 Yêu cầu khả năng làm việc nhóm cao và liên tục.

Dưới đây là một số công việc em đã làm (hoặc đã tham gia làm) ở dự án thực tế củacông ty.

<i>Lưu ý: Vì lý do bảo mật của dự án và u cầu từ phía cơng ty, nên em khơng thể mơ tảtồn bộ nội dung của cơng việc. Sau khi xin phép, công ty cho phép em báo cáo gồmnhững nội dung như dưới đây.</i>

<b>Alobo – Đặt lịch sân thể thao</b>

App Store: Alobo – Đặt lịch sân thể thao on the App Store

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

Google Play Store: Alobo – Đặt lịch sân thể thao on the Google Play Store

<b>2.3.1. Màn hình Đăng nhập</b>

<i>Hình 2.1. Màn hình đăng nhập ứng dụng Đặt lịch sân thể thao</i>

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

<i>Hình 2.2. Màn hình đăng nhập ứng dụng Quản lý sân thể thao</i>

 Chức năng: Xác thực người dùng trước khi vào ứng dụng.

 Tổng thời gian: 2 ngày (Chưa bao gồm thời gian fix bug và update). Gồm:o Tạo giao diện: 0,5 ngày

o Xử lý logic: 1,5 ngày Khó khăn gặp phải và cách xử lý:

o Giao diện bị lỗi trên các thiết bị có kích thước khác nhau: Xử lýresponsive cho màn hình.

o Thiếu kinh nghiệm và kiến thức: Xin ý kiến và hỗ trợ từ mentor.

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

<b>2.3.2. Màn hình Đăng ký</b>

<i>Hình 2.3 Màn hình đăng ký ứng dụng Đặt lịch sân thể thao</i>

 Chức năng: Giúp người dùng tạo tài khoản và mật khẩu cho ứng dụng. Tổng thời gian: 2 ngày (Chưa bao gồm thời gian fix bug và update). Gồm:

o Tạo giao diện: 0.5 ngày.o Xử lý logic: 1,5 ngày. Khó khăn gặp phải và cách xử lý:

o Giao diện bị lỗi trên các thiết bị có kích thước khác nhau: Xử lýresponsive cho màn hình.

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

<b>2.3.3. Màn hình Bản đồ</b>

<i>Hình 2.4. Màn hình Bản đồ ứng dụng Đặt lịch sân thể thao</i>

 Chức năng: Hiển thị địa điểm các sân thể thao đã đăng ký trên ứng dụng dướidạng bản đồ Google Maps. Người dùng có thể xem nhanh danh sách các sâncách mình một khoảng cách nhất định.

 Tổng thời gian: 7 ngày (Chưa bao gồm thời gian fix bug và update). Gồm:o Đọc và tìm hiểu tài liệu về Google Maps và cách cài đặt: 2 ngày.o Tạo giao diện: 1 ngày.

o Xử lý logic: 4 ngày.

 Khó khăn gặp phải và cách xử lý:

o Thiếu kinh nghiệm do lần đầu làm việc với Google Maps, gặp nhiều lỗikhi triển khai Google Maps trong ứng dụng: Nghiên cứu thêm tài liệu vềGoogle Maps API và tham khảo hướng dẫn từ nhiều nguồn khác nhau.

<b>Alobo – Quản lý sân thể thao</b>

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

App Store: Alobo - Quản lý sân thể thao on the App Store

Google Play Store: Alobo - Quản lý sân thể thao on the Google Play Store

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

<b>2.3.5. Màn hình Chi tiết đặt lịch</b>

<i>Hình 2.6. Màn hình Chi tiết đơn đặt lịch (Trạng thái đã hủy)</i>

 Chức năng: Hiển thị thông tin chi tiết của đơn đặt lịch.

 Tổng thời gian: 4 ngày (Chưa bao gồm thời gian fix bug và update). Gồm:o Tạo giao diện: 2 ngày.

o Xử lý logic: 2 ngày.

 Khó khăn gặp phải và cách xử lý:

o Với mỗi trạng thái của đơn, địi hỏi phải có một giao diện tương ứngriêng biệt nhưng không khác nhau quá nhiều, nếu chia mỗi loại thànhmột lớp khác nhau thì nhiều chỗ sẽ bị lặp lại code, khả năng mở rộngsau nay khó khăn: Áp dụng các mẫu thiết kế đã học để tối giản việc viếtmã, tái sử dụng những chỗ giống nhau bằng template method designpattern.

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

o Giao diện phức tạp với nhiều thành phần xử lý, gặp nhiều lỗi về giaodiện: Nghiên cứu tài liệu hướng dẫn từ các nguồn, xin ý kiến từ mentorvề cách khắc phục.

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

<b>2.3.7. Màn hình Đơn chờ duyệt</b>

<i>Hình 2.8. Màn hình Đơn chờ duyệt</i>

 Chức năng: Hiển thị danh sách các đơn đặt lịch đang chờ duyệt.

 Tổng thời gian: 1 ngày (Chưa bao gồm thời gian fix bug và update). Gồm:o Tạo giao diện: 0,5 ngày.

o Xử lý logic: 0,5 ngày.

 Khó khăn gặp phải và cách xử lý: Do có nhiều kinh nghiệm hơn so với lúc đầu,nên khi thực hiện tính năng này, em khơng gặp nhiều khó khăn. Dẫn đến thờigian làm cũng trở nên ít hơn và cơng việc cũng thuận lợi hơn.

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

<b>2.3.8. Màn hình Bán hàng</b>

<i>Hình 2.9. Màn hình Bán hàng</i>

 Chức năng: Giúp chủ sân tạo các đơn hàng dịch vụ trong ngày.

 Tổng thời gian: 9 ngày (Chưa bao gổm thời gian fix bug và update). Gồm:o Tạo giao diện: 4 ngày.

o Xử lý logic: 5 ngày.

 Khó khăn gặp phải và cách xử lý:

o Lỗi khi triển khai giao diện, giao diện hoạt động khơng đúng với mongmuốn: Tìm hiểu tài liệu và hướng dẫn từ các nguồn, xin ý kiến và hỗ trợtừ mentor.

o Các lớp model hiện tại không phù hợp với dữ liệu cần hiển thị trên mànhình: Thảo luận với mentor xin ý kiến và cách xử lý.

o Giao diện màn hình phức tạp với nhiều hành động khác nhau.

Ngồi các nhiệm vụ được liệt kê phía trên, trong quá trình tham gia vào dự án, emcũng nhận được một số task nhỏ liên quan đến việc chỉnh sửa một số giao diện màn

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

<b>CHƯƠNG 3: TỔNG KẾT</b>

Quãng thời gian thực tập tại Document Easy đã giúp em cải thiệnbản thân rất nhiều trong quy trình làm việc thực tế, tác phong củangười kỹ sư phần mềm. Công việc ở đây đã giúp em tiếp cận và họchỏi được nhiều kỹ năng cần thiết để trở thành một lập trình viênFlutter. Thêm vào đó là các kỹ năng mềm khác trong cơng việc nhưcách sử dụng email, làm việc nhóm, quản lý thời gian,…

Khóa training với các yêu cầu, mục tiêu đề ra ban đầu được em hoànthành đúng thời gian.

Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các nhiệmvụ với chất lượng tốt, mới đầu tuy cịn nhiều sai sót về deadlinenhưng cũng dần được em cải thiện trong quá trình làm việc ở cơngty.

<b>3.1. Điểm mạnh</b>

 Kiến thức cơ bản tốt: Em có kiến thức nền tốt về lập trình nói chung và Flutternói riêng. Hồn thành khóa training với đầy đủ mục tiêu và thời hạn đề ra. Khitham gia dự án thực tế, em cũng tốn ít thời gian hơn để làm quen với môitrường mới.

 Giao tiếp và làm việc nhóm: Giao tiếp tốt giúp em dễ dàng làm quen, trao đổi,thảo luận với mọi người. Dễ dàng đóng góp ý kiến và phát triển ý tưởng trongcông việc.

 Sáng tạo: Thường xuyên tham gia đóng góp ý tưởng giúp cải thiện chất lượngứng dụng và hệ thống.

 Đảm bảo chất lượng cơng việc: Hồn thành tốt các nhiệm vụ được giao. Kỷ luật, nghiêm túc trong cơng việc, có trách nhiệm với các task được giao.

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

<b>3.2. Điểm yếu</b>

 Thiếu sót về kiến thức: Thiếu chuyên môn trong một số nhiệm vụ yêu cầu kỹnăng cao và kinh nghiệm. Điều này dẫn đến hậu quả là em thường hồn thànhtrễ tiến độ hoặc khơng hồn thành được nhiệm vụ.

 Khả năng đánh giá mức độ công việc chưa tốt: Do thiếu kinh nghiệm làm việcthực tế, nên một số task được em ước lượng thời gian chưa được hợp lý.

<b>3.3. Chuẩn đạt được</b>

Goal Mục tiêu môn học

G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh nghiệpG2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ thống

</div>

×