Đồ án HCMUTE: Phát triển ứng dụng quản lý mua bán gas trên iOS sử dụng Dart và Flutter

Đồ án nghiên cứu hcmute phát triển ứng dụng quản lý mua bán gas trên ios sử dụng ngôn ngữ dart trên nền tảng flutter, áp dụng công nghệ tiên tiến, tối ưu giải pháp kỹ thuật cho

Chuyên ngành

Sư Phạm Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Khóa Luận Tốt Nghiệp

2020

89
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. PHẦN 1: PHẦN MỞ ĐẦU

1.1. TÍNH CẤP THIẾT ĐỀ TÀI

1.2. MỤC ĐÍCH CỦA ĐỀ TÀI

1.3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

1.4. KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC

2. PHẦN 2: PHẦN NỘI DUNG

2. CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1. TÌM HIỂU VỀ FLUTTER

1.1.1. Flutter là gì?

1.1.2. Flutter Framework Model Cấu thành như thế nào?

1.1.3. So Sánh với các Cross-platform framework khác

1.1.4. Các Widget trong flutter

1.1.5. Phương thức render của flutter

1.1.6. Ngôn Ngữ Dart

1.1.6.1. Các Ưu điểm của Ngôn ngữ Dart
1.1.6.2. Tại sao Flutter lại sử dụng Dart

1.1.7. Giới thiệu về firebase

1.1.7.1. Các chức năng chính của firebase
1.1.7.2. Những lợi ích của firebase

1.2. CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

1.2.1. Khảo sát hiện trạng

1.2.1.1. Ứng dụng Gas24h
1.2.1.2. Ứng dụng VipGas
1.2.1.3. Ứng dụng bán Lazada

1.2.2. XÁC ĐỊNH YÊU CẦU

1.2.2.1. Yêu cầu Chức năng
1.2.2.2. Yêu cầu phi chức năng

1.3. CHƯƠNG 3: THIẾT KẾ PHẦN MỀM

1.3.1. THIẾT KẾ CƠ SỞ DỮ LIỆU

1.3.1.1. Mô tả công việc
1.3.1.2. Thiết kế cơ sở dữ liệu

1.3.2. THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ

1.3.2.1. Khách hàng
1.3.2.1.1. Đăng ký, đăng nhập, Quên mật khẩu
1.3.2.1.2. Thông tin tài khoản
1.3.2.1.3. Thông tin sản phẩm và đánh giá
1.3.2.1.4. Menu tùy chọn
1.3.2.1.5. Quản lý đơn hàng
1.3.2.2. Admin
1.3.2.2.1. Trang chủ admin
1.3.2.2.2. Chi tiết đơn hàng của admin
1.3.2.2.3. Menu tùy chọn admin

1.4. CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ

1.4.1. Thiết lập môi trường

1.4.2. Cài đặt và kiểm thử các giao diện

3. PHẦN 3: PHẦN KẾT LUẬN

3.1. KẾT QUẢ ĐẠT ĐƯỢC

3.2. ƯU ĐIỂM, NHƯỢC ĐIỂM

3.3. HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu về ứng dụng quản lý mua bán gas

Ứng dụng quản lý mua bán gas trên iOS được phát triển nhằm đáp ứng nhu cầu ngày càng cao của người tiêu dùng trong việc đặt hàng gas một cách nhanh chóng và tiện lợi. Quản lý ứng dụng này không chỉ giúp người dùng dễ dàng tìm kiếm và đặt gas mà còn cung cấp thông tin chi tiết về sản phẩm, từ đó nâng cao trải nghiệm người dùng. Việc sử dụng ngôn ngữ DartFlutter framework cho phép phát triển ứng dụng với hiệu suất cao và giao diện thân thiện. Ứng dụng này không chỉ đơn thuần là một công cụ mua bán mà còn là một giải pháp giúp người tiêu dùng có cái nhìn rõ ràng hơn về các sản phẩm gas trên thị trường.

1.1. Tính cấp thiết của đề tài

Trong bối cảnh thị trường gas hiện nay, việc xuất hiện nhiều sản phẩm giả và kém chất lượng đã gây ra không ít khó khăn cho người tiêu dùng. Ứng dụng quản lý mua bán gas sẽ giúp người tiêu dùng có thể dễ dàng tiếp cận thông tin về sản phẩm, từ đó đưa ra quyết định mua hàng chính xác hơn. Quản lý gas thông qua ứng dụng di động không chỉ giúp tiết kiệm thời gian mà còn nâng cao tính minh bạch trong giao dịch.

1.2. Mục đích của ứng dụng

Mục đích chính của ứng dụng là cung cấp một nền tảng cho phép người dùng thực hiện các giao dịch mua bán gas một cách dễ dàng và nhanh chóng. Ứng dụng sẽ tích hợp các chức năng như đăng ký, đăng nhập, quản lý tài khoản, xem chi tiết sản phẩm và đánh giá sản phẩm. Điều này không chỉ giúp người dùng có trải nghiệm tốt hơn mà còn tạo ra một môi trường cạnh tranh lành mạnh giữa các nhà cung cấp gas.

II. Công nghệ sử dụng trong phát triển ứng dụng

Việc phát triển ứng dụng trên nền tảng iOS sử dụng Dart programmingFlutter framework mang lại nhiều lợi ích. Flutter cho phép xây dựng giao diện người dùng đẹp mắt và mượt mà, đồng thời hỗ trợ phát triển ứng dụng đa nền tảng. Lập trình Dart giúp tối ưu hóa hiệu suất của ứng dụng, cho phép biên dịch nhanh chóng và hiệu quả. Sự kết hợp này không chỉ giúp tiết kiệm thời gian phát triển mà còn đảm bảo chất lượng sản phẩm cuối cùng.

2.1. Lợi ích của Flutter

Flutter là một framework mạnh mẽ cho phép phát triển ứng dụng di động với giao diện người dùng đẹp và hiệu suất cao. Với khả năng tích hợp API, Flutter giúp lập trình viên dễ dàng kết nối với các dịch vụ bên ngoài, từ đó mở rộng chức năng của ứng dụng. Hơn nữa, Flutter hỗ trợ việc phát triển ứng dụng trên cả hai nền tảng iOS và Android, giúp tiết kiệm thời gian và chi phí cho doanh nghiệp.

2.2. Ngôn ngữ Dart

Dart là ngôn ngữ lập trình được thiết kế đặc biệt cho phát triển ứng dụng di động. Với cú pháp dễ hiểu và khả năng biên dịch nhanh, Dart giúp lập trình viên dễ dàng xây dựng và duy trì mã nguồn. Việc sử dụng Dart trong phát triển ứng dụng quản lý mua bán gas không chỉ giúp tối ưu hóa hiệu suất mà còn tạo ra một mã nguồn sạch và dễ bảo trì.

III. Tính năng chính của ứng dụng

Ứng dụng quản lý mua bán gas trên iOS được thiết kế với nhiều tính năng nổi bật nhằm đáp ứng nhu cầu của người dùng. Các tính năng này bao gồm đăng ký, đăng nhập, quản lý tài khoản, xem chi tiết sản phẩm, đánh giá sản phẩm và quản lý đơn hàng. Những tính năng này không chỉ giúp người dùng dễ dàng thao tác mà còn tạo ra một trải nghiệm mua sắm trực tuyến tiện lợi và hiệu quả.

3.1. Quản lý tài khoản

Người dùng có thể dễ dàng đăng ký và đăng nhập vào ứng dụng thông qua tài khoản Google hoặc Facebook. Tính năng này giúp tiết kiệm thời gian và tạo sự thuận tiện cho người dùng. Ngoài ra, ứng dụng cũng cho phép người dùng quản lý thông tin tài khoản, bao gồm việc cập nhật thông tin cá nhân và thay đổi mật khẩu.

3.2. Đặt hàng và quản lý đơn hàng

Ứng dụng cho phép người dùng xem chi tiết sản phẩm, từ đó đưa ra quyết định mua hàng chính xác. Sau khi đặt hàng, người dùng có thể theo dõi tình trạng đơn hàng của mình, từ lúc đặt cho đến khi giao hàng. Tính năng này không chỉ giúp người dùng yên tâm mà còn tạo ra sự minh bạch trong quá trình giao dịch.

IV. Kết luận và hướng phát triển

Ứng dụng quản lý mua bán gas trên iOS không chỉ đáp ứng nhu cầu của người tiêu dùng mà còn góp phần nâng cao chất lượng dịch vụ trong ngành gas. Việc sử dụng công nghệ di động hiện đại như DartFlutter giúp ứng dụng hoạt động hiệu quả và thân thiện với người dùng. Trong tương lai, ứng dụng có thể được mở rộng với nhiều tính năng mới như tích hợp thanh toán trực tuyến và hệ thống đánh giá sản phẩm từ người dùng.

4.1. Đánh giá hiệu quả ứng dụng

Ứng dụng đã cho thấy sự hiệu quả trong việc quản lý mua bán gas, giúp người tiêu dùng dễ dàng tiếp cận thông tin và thực hiện giao dịch. Sự tiện lợi và nhanh chóng của ứng dụng đã tạo ra một trải nghiệm mua sắm tốt hơn cho người dùng.

4.2. Hướng phát triển trong tương lai

Trong tương lai, ứng dụng có thể được phát triển thêm với các tính năng như tích hợp hệ thống thanh toán trực tuyến và mở rộng quy mô phục vụ cho nhiều khu vực khác nhau. Điều này không chỉ giúp nâng cao trải nghiệm người dùng mà còn mở rộng thị trường cho các nhà cung cấp gas.

01/02/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. TÌM HIỂU VỀ FLUTTER 1. Flutter làgì? Flutter làmobile UI framework của Google để tạo ra các giao diện chất lượng cao trên iOS vàAndroid trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn có được sử dụng bởi các lập trì nh viên, các tổ chức.

Flutter được phát triển nhằm giải quyết bài toán thường gặp trong mobile làFast Development và Native Performance. Nếu như React Native chỉ đảm bảo Fast Development vàcode native thuần chỉ đảm bảo Native Performance thìFlutter làm được cả 2 điều trên. Flutter Framework Model Cấu thành như thế nào? Flutter được viết chia làm hai tầng. Tầng ở trên sử dụng ngôn ngữ Dart cung cấp các đoạn mã xây dựng lên một ứng dụng Flutter.

Các đoạn mã này cung cấp phương tiện để có thể thay đổi và chỉnh sửa chúng. Từ đó giúp ứng dụng của lập trình viên có thể được tùy chỉnh theo mong muốn. Tầng Application này giúp lập trình viên thay đổi mã nguồn ứng dụng ở thời điểm compile time. Tầng thứ hai của Flutter nằm ở sâu bên dưới và được viết bằng C++.

Tầng Shell này chứa các công tụ trợ giúp ứng dụng Flutter trong quá trình chạy. Nổi bật cần lưu ý ở tầng này là máy ảo Dart VM. Khái niệm máy ảo là khái niệm về một ứng dụng chạy song song với mã nguồn chính như một phần của ứng dụng. Máy ảo Dart VM có ba nhiệm vụ chính bao gồm.

 Làm ứng dụng trung gian giữa mã nguồn được viết bởi Dart và thiết bị phần cứng (hoặc phần mềm nằm ngoài ứng dụng).  Thông dịch các đoạn mã Dart theo phương thức JIT (Just in time - mã nguồn chỉ được thông dịch khi được gọi đến) hoặc AOT (Ahead of Time – Mã) 12 do an  Thực thi các đoạn mã đã được thông dịch hoặc biên dịch cũng như cung cấp các runtime system bao gồm garbage collector, một vài các thư viện cần có của ngôn ngữ. So Sánh với các Cross-platform framework khác. Một ứng dụng để chạy được trên các thiết bị thông thường sẽ tạm quan tâm tới hai thành phần.

Thành phần gần với lập trình viên hơn là lớp Application. Lớp Application chứa các đoạn mã được viết bởi lập trình viên và các công cụ giúp ứng dụng hoạt động và quản lý hoạt động của ứng dụng. Thành phần được quan tâm thứ hai là lớp Platform ở đây dùng để chỉ các hệ điều hành hoặc các ứng dụng trung gian giữa ứng dụng của lập trình viên và thiết bị. Trong phạm vi lập trình ứng dụng mobile, Lớp Platform được chia làm ba thành phần bao gồm.

 Services: Bao gồm các ứng dụng được viết và cài đặt mặc định trong thiết bị có trách nhiệm quản lý giao tiếp giữa các ứng dụng trong thiết bị với nhau, cung cấp thông tin của thiết bị cho các ứng dụng hoặc thực thi các yêu cầu của ứng dụng để điều khiển thiết bị (Location, Camera, Sensors.  Canvas/Events: Là các ứng dụng giúp hiển thị giao diện lên màn hình hoặc các thiết bị trình chiếu đồng thời nhận lại các sự kiện xuất hiện trên các giao diện này (ví dụ như tương tác của người dùng hoặc các sự kiện từ các animation.  OEM Widgets: Thành phần phụ được cấu thành do sự thống nhất giữa các vendor (nhà cung cấp thiết bị (HTC), đơn vị phát hành thiết bị (NTT Docomo)) nhằm thống nhất một quy chuẩn chung cho các UI (thành phần giao diện) được sử dụng trong các Platform. Quy chuẩn được thống nhất này tạo ra một vài giới hạn cho việc viết lên UI sẽ được nói kĩ ở phần sau.

Thành phần sẽ được so sánh trong phạm vi bài viết này là kiến trúc của lớp Application cũng như cách mà lớp Application giao tiếp với lớp Platform. Giống như đã đề cập ở phần trước. Tầng Application của Flutter cung cấp kiến trúc cho một ứng 13 do an dụng viết bằng Flutter và tầng Shell cung cấp khả năng giao tiếp giữa ứng dụng viết bằng Flutter và lớp Platform. Lấy ví dụ về một ứng dụng được viết bằng đoạn mã Native.

Toàn bộ mã thực thi được viết ở dạng Native sẽ được biên dịch hoặc thông dịch qua dạng mà tầng Platform có thể hiểu được và thực thi trên đó. Đối với ứng dụng viết ở dạng Hybrid, các đoạn mã giao diện của ứng dụng được viết bằng HTML/CSS và được vẽ ra với DOM qua dạng hiển thị được trên WebView. WebView sẽ trực tiếp điều khiển Canvas vẽ lên UI và nhận các event ngược lại thông qua WebView đó. Mã thực thi của các ứng dụng viết dựa trên Hybrid được sử dụng dưới dạng Javascript.

JavaScript có thể dễ dàng điều khiển HTML/CSS thông qua giao tiếp với WebView tuy nhiên nhằm mục đích bảo mật, WebView không được cung cấp khả năng giao tiếp với các services hoặc điều khiển phần cứng của lớp Platform dẫn đến các ứng dụng viết dựa trên Hybrid cần một module trung gian thường gọi là Bridge để làm điều này. Module này phải đọc hiểu Javascript và tồn tại luôn trong mãnguồn của ứng dụng dẫn đến kích thước của ứng dụng bị tăng lên đáng kể3. Đối với các ứng dụng được viết ở dạng WebNative hoặc Cross compiled, sẽ không có phần WebView được sử dụng mà thay vào đó module Bridge sẽ thực hiện toàn bộ các hành vi trung gian giữa lớp Application và lớp Shell. Mã nguồn của ứng dụng cũng không bị giới hạn bởi Javascript nữa mà tùy thuộc vào nhà phát triển các nền tảng dạng này.

Có thể là Native Code có thể là Non-native code. Đối với Flutter, mã nguồn được cross compile thành native code. Dựa vào máy ảo Dart VM, những thành phần ít thay đổi sẽ được compile dạng AOT còn những thành phần thường xuyên thay đổi sẽ được compile thành dạng JIT. Flutter không cam kết với các OEM Widgets.

Flutter cho phép lập trình viên thay đổi và điều khiển từng pixel trên màn hình và không cần quan tâm đến những giới hạn của OEM Widgets. Tuy nhiên khác với các ứng dụng viết ở dạng Hybrid khi lập trình viên phải tự quan tâm đến các chuẩn của OEM Widgets, Flutter cũng cung cấp các Widget mặc định hỗ trợ hai nền tảng giao diện là Material Design (cho Android/Fuchsia) và 14 do an Cupertino (cho iOS). Bạn cũng có thể quay trờ về với Flat Design thông qua một số thư viện trôi nổi trên thị trường. Các Widget trong flutter Trong Flutter, mọi thứ đều làWidgets vậy Widget làgì ? Chúng ta xét qua thử một đoạn code mẫu bên dưới.

15 do an Đây là hai class quan trọng nhất trong Flutter. Theo đó, class Widget chịu trách nhiệm hình thành cấu trúc của Diagnosticable Tree4 (Cây chuẩn đoán là một cấu trúc dữ liệu dạng cây hỗ trợ việc định nghĩa cấu trúc giao diện được vẽ lên trong ứng dụng viết bằng Flutter) trong khi class Element chịu trách nhiệm quản lý trạng thái của từng Widget trên cái cây đó. Tư tưởng cơ bản của Flutter tương tự như một Web Application. Tất cả trong một.

Flutter căng ra một mảnh vải làcanvas vàvẽ tất cả mọi thứ lên đó. Khi trạng thái của dữ liệu thay đổi vídụ như người dùng chuyển màn hì nh hay thay đổi dữ liệu trên màn hình được phản ánh thông qua việc xóa đi các Widget cũ nh vìvậy thay vìphải biết đến các StoryBoard (trong vàvẽ lên các Widget mới. Chí iOS) hay các Activity (trong Android), Flutter đưa tất cả các khái niệm liên quan đến giao diện về một khái niệm duy nhất gọi làWidget. Việc quản lý trạng thái của các Widget cũng được đưa về cho lập trình viên thực hiện.

Điểm khác biệt này cũng đặc biệt hơn khi Dart là ngôn ngữ Component Based. Trong Flutter, khi muốn điều chỉnh trạng thái về kích thước hay vị trícủa một Widget nào đó, ta không thực hiện việc đó trong Widget hiện tại mà được khuyến khí ch bọc Widget đó trong một Widget nào đó chỉ chuyên làm việc này. Điều này khiến cho tí nh chất "Trong Flutter thìmọi thứ đều làWidget" lại càng chuẩn hơn bao giờ hết. Màn hì nh làWidget, thành phần giao diện cũng là Widget, thậm chícả thông tin về layout cũng làWidget.

Một điểm nữa cần lưu tâm cũng là đặc tí nh của Widget trong Flutter đó là thuộc nh Widget#key. Mọi Widget đều độc lập. Lído làvìWidget không thể tự vẽ lại bản tí thân. Để thực hiện điều này ta cần thông báo cho Element.

Cách dễ nhất để cóthể dễ dàng thông báo cho Element làlàm bẩn (dirty) instance tương ứng dẫn đến Widget Tree được vẽ lại. Widget Tree được vẽ lại thìinstance của Widget cũ sẽ không còn. 16 do an Trong một vài trường hợp cần phải tìm lại giátrị của Widget tại vị trí được vẽ lại, ta sử dụng key làm chìa khóa cho vấn đề này. StatefulWidget làgì? Đi qua một vídụ về StatefulWidget để dễ hì nh dung.

Khi tạo mới một StatefulWidget, ta quan tâm đến hai class làStatefulWidget vàState của Widget đó. StatefulWidget là phần không thay đổi trong Widget Tree, thay vào đó, State làphần được thay đổi. Mỗi khi Widget bị làm bẩn, state của Widget đó sẽ được khởi tạo lại thông qua việc gọi đến phương thức StatefulWidget#createState(). Generic type5 (kiểu giữ chỗ) của State định nghĩa ra kiểu dữ liệu của thuộc tí nh State#widget chứa trong nó.

Thuộc tính này chí nh là 17 do an instance của StatefulWidget đã tạo ra State đó. Chính nhờ vậy, từ trong State hoàn toàn cóthể lấy được những giátrị được truyền vào bên trong StatefulWidget thay vì phải truyền vào thông qua hàm khởi tạo. ExampleStatefulWidget class nằm trong Widget Tree và ít thay đổi. Thay vìtạo một class dễ thay đổi trong cây, Flutter cung cấp cho Widget này một thành phần gọi làState.

Trong State chứa một thể hiện của Element tương ứng trong cây thông qua State#_element. Khi cần vẽ lại, có hai sự kiện được sử dụng để làm bẩn Element làdidUpdateWidget() vàsetState(). Ở hàm thứ nhất, khi configuration bị thay đổi, Widget sẽ được thông báo về sự thay đổi này. Lập trình viên @override lại phương thức didUpdateWidget() để bắt sự kiện trước khi Flutter build lại.

Còn để thực hiện yêu cầu Widget thay đổi State, lập trì nh viên sử dụng phương thức setState(). Trong phương thức setState()cócho phép truyền vào một hàm. Mục đích của việc này là đôi khi công việc build lại Widget sẽ tốn một khoảng thời gian trước khi mọi thứ hoàn thành. Hàm callback được truyền vào sẽ đảm bảo Flutter thực thi được trọn vẹn công việc của mì nh.

Vídụ sau khi thay đổi kích thước của một list view màmuốn scroll xuống cuối list. Statelesswidget làgì? Bên cạnh khái niệm về StatefulWidget ta cũng có StatelessWidget. Cách thức để khai báo thì đơn giản hơn rất nhiều và cũng vô cùng nhạt nhẽo. Đại để là cái gì mà đưa nó thành StatelessWidget được thì nên để nólàStatelessWidget.

Phương thức render của flutter Flutter sử dụng Diff Algorithm để xác định sự thay đổi trong Widget Tree.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Ứng dụng quản lý mua bán gas trên iOS bằng Dart và Flutter" giới thiệu một giải pháp công nghệ hiện đại giúp quản lý việc mua bán gas một cách hiệu quả trên nền tảng iOS. Tác giả trình bày chi tiết về quy trình phát triển ứng dụng, từ việc thiết kế giao diện người dùng đến việc tích hợp các tính năng cần thiết như theo dõi đơn hàng, quản lý kho và thanh toán trực tuyến. Những lợi ích mà ứng dụng mang lại không chỉ giúp người dùng tiết kiệm thời gian mà còn nâng cao trải nghiệm mua sắm, đồng thời hỗ trợ các doanh nghiệp trong việc tối ưu hóa quy trình kinh doanh.

Nếu bạn quan tâm đến việc phát triển ứng dụng di động, bạn có thể tham khảo thêm bài viết "Đồ án hcmute xây dựng ứng dụng di động đa nền tảng bán sách sử dụng framework flutter", nơi bạn sẽ tìm thấy thông tin về việc sử dụng Flutter trong các dự án khác. Ngoài ra, bài viết "Đồ án hcmute xây dựng ứng dụng bán gạo trên nền tảng android" cũng cung cấp cái nhìn sâu sắc về phát triển ứng dụng trên nền tảng Android. Cuối cùng, bạn có thể khám phá thêm về "Đồ án hcmute tìm hiểu và xây dựng ứng dụng tìm kiếm quán ăn ios", một dự án tương tự trong lĩnh vực ứng dụng di động. Những tài liệu này sẽ giúp bạn mở rộng kiến thức và kỹ năng trong lĩnh vực phát triển ứng dụng.