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

26 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo thực tập flutter developer

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM

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

Flutter Developer

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

Trang 2

LỜI MỞ ĐẦU

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ế,

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

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

Trang 3

LỜI CẢM ƠN

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

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

Trang 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

Trang 8

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

1.1 Giới thiệu Document Easy

Hình 1.1 Logo Document Easy

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 Ngoà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 đó.

Trang 9

1.2 Sản phẩm công ty

Alobo – Quản lý sân thể thao

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

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 Ngoà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.

Alobo – Đặt lịch sân thể thao

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

Trang 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.

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

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.Ngoà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.

Trang 11

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

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

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, … Ngoà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, quá 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.

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

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ả:

Trang 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 toà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.

2.2.2 Tuần 2

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

Trang 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,…

Trang 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.

Lưu ý: Vì lý do bảo mật của dự án và yêu cầu từ phía công ty, nên em không thể mô tảtoà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.

Alobo – Đặt lịch sân thể thao

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

Trang 15

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

2.3.1 Màn hình Đăng nhập

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

Trang 16

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

 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.

Trang 17

2.3.2 Màn hình Đăng ký

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

 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.

Trang 18

2.3.3 Màn hình Bản đồ

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

 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.

Alobo – Quản lý sân thể thao

Trang 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

Trang 20

2.3.5 Màn hình Chi tiết đặt lịch

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

 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.

Trang 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.

Trang 22

2.3.7 Màn hình Đơn chờ duyệt

Hình 2.8 Màn hình Đơn chờ duyệt

 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.

Trang 23

2.3.8 Màn hình Bán hàng

Hình 2.9 Màn hình Bán hàng

 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.

Ngoà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

Trang 24

CHƯƠNG 3: TỔNG KẾT

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.

3.1 Điểm mạnh

 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 Hoà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: Hoà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.

Trang 25

3.2 Điểm yếu

 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 hoàn thànhtrễ tiến độ hoặc không hoà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ý.

3.3 Chuẩn đạt được

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

Ngày đăng: 15/05/2024, 09:07

Tài liệu cùng người dùng

Tài liệu liên quan