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ư muốn được tham gia làm các ứng dụng di động trong một môi trường chuyên nghiệp, em có dự định là sẽ thự
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 mobile với Flutter
Trang 2Chương 1: Giới thiệu công ty thực tập 5
1 Đào tạo hội nhập cho người mới của công ty 6
2.1 Tìm hiểu và học tập về ngôn ngữ Dart, công nghệ Flutter 7 2.2 Nghiên cứu cách xây dựng mã nguồn và sử dụng các công cụ dựa trên logic
Thuận lợi và khó khăn trong quá trình thực tập 13
Trang 3LỜI MỞ ĐẦU
Thời đại công nghệ ngày càng phát triển, những thứ liên quan đến công nghệ thông tin đang được để tâm hơn cả Đặc biệt là mạng Internet và di động chính là hai thứ được chú trọng phát triển Những phần mềm trên điện thoại và web chính
là công cụ chính được phát triển trong mảng này Một trong số những nền tảng được dùng để phát triển phần mềm điện thoại chính là Flutter
Fluttermột bộ SDK đa nền tảng, các ứng dụng Fluttercó thể hoạt động trên cả iOS và Android Nó như một thủ thuật khôn khéo để tương thích được với
framework UI trên cả hai hệ điều hành này Các ứng dụng này không biên dịch trực tiếp với các ứng dụng native của Android và iOS
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ư muốn được tham gia làm các ứng dụng di động trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập trong hè Vì vậy, em quyết định
chọn Công ty phát triển phần mềm Lecle một môi trường lý tưởng, hiện đại,
chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 4LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty phát triển phần mềm Lecle đã 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 Chân thành cảm ơn các anh 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 anh Huỳnh Bảo Quốc và anh Lâm Xuân Triết đã training Flutter, hướng dẫn, giúp đỡ cho 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, đã chỉ dẫn chúng em về cách làm báo cáo, lên kế hoạch, những kỹ năng không thể thiếu
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
Em xin chân thành cảm ơn !
Trang 5Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty Lecle
Công Ty Cổ Phần LECLE Viet Nam là một công ty phần mềm toàn cầu với các địa điểm tại Hàn Quốc, Mỹ, Singapore và Việt Nam Công ty cung cấp các giải pháp phù hợp nhất với khách hàng trong một môi trường kết hợp các nền văn hóa và công nghệ đa dạng
Trước khi về Việt Nam, Lecle đã triển khai 3 dịch vụ toàn cầu trong 3 năm Tuy nhiên các dịch vụ này đều thất bại vì đã cố gắng giải quyết toàn vẹn vấn đề với phúc lợi cho lập trình viên
Là một công ty phát triển phần mềm với mong muốn trở thành một công ty có thể biến ý tưởng trở thành sản phẩm một cách nhanh và hiệu quả nhất với cách triển khai các kỹ thuật tiên tiến nhất để tạo ra kiệt tác với mọi dự án
Slogan: Ideas turned into business
2 Sản phẩm công ty
Một số sản phẩm công cộng của công ty:
● 9cam - Ứng dụng để chụp hoàn hảo từng pixel mà không cần lo lắng về filter, độ phơi sáng, độ sáng, …
● Bombus - Một Website để thiết kế các nhân vật 2D, 3D, hình nền, hoạt ảnh và các thiết kế đồ họa liên quan với VFX
● Crypto Badge - Một hệ thống chứng chỉ dựa trên blockchain để xác nhận chuyên gia, thành tựu và các đóng góp
● Bell Boy - Một ứng dụng khách sạn hiện đại hỗ trợ khách làm thủ tục đặt phòng nhanh chóng và sử dụng dịch vụ phòng
● Meetera - Dùng cho bất kỳ ai muốn tổ chức hội thảo Tìm kiếm và tham gia những cuộc hội thảo nào đang có sẵn
Trang 6Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình mobile bằng flutter" nhằm mục đích giúp đào tạo sinh viên toàn diện về lập trình mobile đa nền tả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 cộng đồng và tham gia các dự án thực tế của công ty… Thông qua đợt thực tập này, các sinh viên thực tập được đảm bảo cả về kỹ năng cứng lẫn mềm và làm quen được với các kiến thức mới cũng như những cách thức làm việc và những khó khăn thử thách trong môi trường làm việc công ty có quy mô lớn
1 Đào tạo hội nhập cho người mới của công ty
● Thời gian: 1 ngày
● Nội dung:
○ Giới thiệu về công ty Lecle
○ Giới thiệu về Team mobile
○ Giới thiệu các anh hướng dẫn
○ Sinh hoạt về quy chế, điều lệ, phúc lệ công ty
● Kết quả: Tìm hiểu rõ hơn về hệ thống vận hành của công ty Lecle Tiếp thu
và vận dụng các quy chế điều lệ, cách đảm bảo an toàn thông tin trong suốt quá trình làm việc
2 Nghiên cứu kỹ thuật
2.1 Tìm hiểu và học tập về ngôn ngữ Dart, công nghệ Flutter
● Thời gian: 3 tháng
● Nội dung:
○ Làm quen các cú pháp của ngôn ngữ dart, biến và các câu lệnh if else, for, while
○ Tìm hiểu Flutter là gì? Tại sao phải sử dụng Flutter? Flutter hoạt động như thế nào?
○ Tìm hiểu Widget, State, Bloc trong Flutter là gì? Tìm hiểu về vòng đời
Trang 7của một Widget.
○ Tìm hiểu cách sử dụng các widget cơ bản trong Flutter như button,
textfield, …
○ Tìm hiểu về cách hoạt động của Navigation
● Thực hiện: Làm 1 dự án cá nhân về to-do list
● Kết quả: Hiểu biết rõ căn bản về Flutter cũng như cách phát triển một app
mobile trên Flutter
2.2 Nghiên cứu cách xây dựng mã nguồn và sử dụng các công cụ dựa trên logic nghiệp vụ của công ty
● Thời gian: 1 tuần
● Nội dung:
○ Thiết kế giao diện ứng dụng dựa theo mẫu code của công ty
○ Tìm hiểu cách sử dụng dependency injection và repository class
○ Tìm hiểu cách sử dụng Postman, fetch API trong Flutter
● Thực hiện: Thiết kế giao diện và ráp API
● Kết quả: Hoàn thành kiến thức cơ bản trong nghiệp vụ công ty
3 Thực hiện project:
Sau những tháng nghiên cứu thực tập sinh sẽ dành 3 tháng để áp dụng những
kiến thức đã học để thực hiện một project được khách hàng giao cho công ty,
cùng với sự giúp đỡ của những anh hướng dẫn để nắm bắt được vòng đời phát
triển một dự thực tế
Thời gian (Tuần) Công việc Người hướng dẫn
1 ● Tìm hiểu về công ty, cách
tổ chức của công ty
● Nguyễn Mạnh Hùng
● Nguyễn Thảo Quỳnh Uyên
Trang 8● Làm quen với các công cụ làm việc trong công ty
● Học cách trao đổi, làm việc qua email
1 ● Tìm hiểu pattern nâng cao
như bloc, dependency injection
● Lâm Xuân Triết
2 ● Thiết kế các Widget, màn
hình chi tiết theo wireframe khách hàng
● Huỳnh Bảo Quốc
3 ● Nâng cấp, màn hình chi tiết
theo designer
● Nguyễn Thị Nguyệt Như
4 ● Tiến hành ráp API cho màn
hình
● Review logic, UI/UX màn hình
● Huỳnh Bảo Quốc
● Lâm Xuân Triết
● Võ Duy Cận
1 ● Release sản phẩm demo
cho khách hàn
● Đưa sản phẩm lên các cửa hàng như AppStore và Playstore
● Nguyễn Xuân Trường
Trang 9Chương 3: Chi tiết về project
1 Giới thiệu về mobile
Ứng dụng mobile video editing, nhắm giúp người dễ dàng hơn trong việc chỉnh video mà không cần quá nhiều kiến thức liên quan, đồng thời tạo ra một môi trường chia sẻ video như TikTok Đây là project của kỳ thực tập lần này, project nhắm về việc dự án đã giải quyết vấn đề liên quan tới các nhu cầu thực tế đồng thời củng cố kiến thức đã được training trong tháng vừa rồi, cách xây dựng một mobile là như thế nào, kỹ thuật coding concept như thế nào là đúng Các kỹ thuật trong lập trình flutter Mục đích chỉ nhắm tới cách
mà mình tạo dựng đồ án chứ không phải là nội dung của dự án
Trang 102 Một số giao diện của sản phẩm
Trang 123. Kế hoạch & kết quả
3.1 Kế hoạch
- Hoàn thiện tất cả màn hình
- Kết nối với bên back-end thông qua REST API
- Giao responsive ở một vài trang quan trọng
3.2 Thực hiện
- Nắm rõ kiến thức về Flutter
- Hoàn thiện tất cả màn hình của ứng dụng
- Sử dụng Bloc, Rxdart để quản lý state
- Thực hiện kết nối với backend thông qua việc get và put API
- Hoàn thiện tất cả các chức năng ở những trang quan trọng
- Fix các bug nảy sinh trong quá trình phát triển
- Demo cho sếp định kỳ hàng tuần
3.3 Kết quả
- Tất cả các chức năng và màn hình đã hoàn thành theo yêu cầu
- Củng cố kiến thức đã biết về flutter, học được cách sử dụng Rxdart, pattern và ứng dụng nó qua quá trình phát triển các tính năng
- Học cách giao tiếp với thành viên trong nhóm để làm rõ yêu cầu, lên kế hoạch thực hiện các tính năng
Trang 13Chương 4: Tổng kết
1 Kết quả đạt được:
● Kiến thức
○ Sau quá trình làm cùng chung dự án cùng các cố vấn, kiến thức về lập trình mobile (Flutter) được nâng cao
○ Nâng cao các kiến thức về mẫu thiết kế, tổ chức mã nguồn và logic các loại nghiệp vụ
● Kỹ năng
○ Nâng cao kỹ năng giao tiếp và trao đổi giữa các thành viên
○ Kỹ năng tổ chức mã nguồn có cấu trúc phục vụ các business logic
○ Kỹ năng viết mã lập trình rõ ràng, dễ hiểu và tái sử dụng
○ Kỹ năng viết mã hỗ trợ cho các thành viên trong nhóm
○ Kỹ năng tìm và phát hiện lỗi
○ Kỹ năng sử dụng các công cụ hỗ trợ lập trình
● Kinh nghiệm
○ Kinh nghiệm của bản thân sau khi thực tập được nâng cao với những kinh nghiệm làm việc theo từng dự án sao cho tối ưu nhất khi bảo trì phần mềm, kinh nghiệm liên quan đến phong cách lập trình dễ đọc dễ hiểu
○ Học tập được nhiều hơn về cách phân bổ thời gian sao cho không làm chậm tiến trình của dự án
○ Với kinh nghiệm của các anh chị khi được làm việc chung đã truyền đạt kinh nghiệm làm việc nhóm sao cho hiệu quả nhất tránh việc không mong muốn xảy ra trong quá trình phát triển phần mềm Khả năng giao tiếp với các thành viên sao cho khách hàng dễ nắm bắt, dễ hiểu
2 Thuận lợi và khó khăn trong quá trình thực tập
● Thuận lợi
○ Trong quá trình thực tập em nhận được sự giúp đỡ, chỉ dạy nhiệt tình của các anh chị trong công ty cả về kiến thức chuyên môn lẫn phong cách làm việc
○ Trước khi vào làm việc chính thức em đã được tham gia khóa học về
Trang 14○ Ngoài ra, được công ty hỗ trợ chi phí và trợ cấp, hỗ trợ các điều kiện tốt trong thời điểm làm việc từ xa
● Khó khăn
○ Trong quá trình thực tập vì còn là người mới nên vẫn chưa nắm rõ về quy trình, kiến thức còn chứa nhiều nên việc lập trình còn chưa tối ưu, còn xảy
ra nhiều lỗi
○ Vì thời gian thực tập có giới hạn vì vậy không thể tham gia hết dự án của công ty, chưa thể nắm rõ hết toàn bộ quy trình của một dự án thực tế
○ Kỹ năng giao tiếp và diễn đạt còn chưa tốt, không được tiếp xúc trực tiếp nên còn nhiều khó khăn trong việc học tập thêm các kiến thức từ các anh