Dart 语言 基于Flutter实现电商APP购物车功能

Dart阿木 发布于 2025-06-19 11 次阅读


基于Flutter的Dart语言实现电商APP购物车功能

随着移动互联网的快速发展,电商APP已经成为人们日常生活中不可或缺的一部分。购物车功能作为电商APP的核心功能之一,其实现的好坏直接影响到用户体验。本文将围绕Dart语言和Flutter框架,详细讲解如何实现一个电商APP的购物车功能。

Flutter是Google推出的一款开源UI工具包,用于构建美观、快速、跨平台的移动应用。Dart是Flutter的官方开发语言,具有简洁、高效的特点。本文将结合Dart语言和Flutter框架,实现一个电商APP的购物车功能。

购物车功能概述

购物车功能主要包括以下功能点:

1. 商品展示:展示所有商品信息,包括商品名称、价格、图片等。

2. 商品添加:用户可以将商品添加到购物车。

3. 购物车展示:展示购物车中的商品信息,包括商品名称、价格、数量等。

4. 商品数量调整:用户可以调整购物车中商品的数量。

5. 商品删除:用户可以删除购物车中的商品。

6. 订单结算:用户可以查看购物车中的商品,并完成订单结算。

技术选型

1. Flutter框架:用于构建跨平台UI。

2. Dart语言:作为Flutter的官方开发语言。

3. Provider状态管理:用于管理购物车状态。

4. SQLite数据库:用于存储购物车数据。

实现步骤

1. 创建Flutter项目

使用Dart命令创建一个新的Flutter项目:

dart

flutter create shopping_cart_app


2. 添加依赖

在`pubspec.yaml`文件中添加以下依赖:

yaml

dependencies:


flutter:


sdk: flutter


provider: ^6.0.0


sqflite: ^2.0.0+4


path_provider: ^2.0.1


3. 创建数据库

使用`sqflite`插件创建SQLite数据库,并定义购物车表结构:

dart

import 'package:sqflite/sqflite.dart';


import 'package:path/path.dart';

class DatabaseHelper {


static final DatabaseHelper _instance = DatabaseHelper._internal();


factory DatabaseHelper() => _instance;


final Database _database;

DatabaseHelper._internal() {


_database = openDatabase(


join(path_provider.getApplicationSupportDirectory().path, 'shopping_cart.db'),


version: 1,


onCreate: (db, version) {


db.execute('CREATE TABLE cart (id INTEGER PRIMARY KEY, product_id INTEGER, product_name TEXT, product_price REAL, product_quantity INTEGER)');


},


);


}

Future<Database> get database async => _database;


}


4. 创建购物车Provider

使用`provider`插件创建购物车Provider,用于管理购物车状态:

dart

import 'package:flutter/material.dart';


import 'package:provider/provider.dart';


import 'package:shopping_cart_app/database/database_helper.dart';


import 'package:shopping_cart_app/models/cart_item.dart';

class ShoppingCartProvider with ChangeNotifier {


List<CartItem> _cartItems = [];

List<CartItem> get cartItems => _cartItems;

Future<void> addCartItem(CartItem item) async {


await DatabaseHelper().database.then((db) {


db.insert('cart', item.toMap());


});


_cartItems.add(item);


notifyListeners();


}

Future<void> removeCartItem(int id) async {


await DatabaseHelper().database.then((db) {


db.delete('cart', where: 'id = ?', whereArgs: [id]);


});


_cartItems.removeWhere((item) => item.id == id);


notifyListeners();


}

Future<void> updateCartItemQuantity(int id, int quantity) async {


await DatabaseHelper().database.then((db) {


db.rawUpdate('UPDATE cart SET product_quantity = ? WHERE id = ?', [quantity, id]);


});


_cartItems.firstWhere((item) => item.id == id).quantity = quantity;


notifyListeners();


}


}


5. 创建购物车页面

创建一个购物车页面,展示购物车中的商品信息,并实现商品数量调整、删除等功能:

dart

import 'package:flutter/material.dart';


import 'package:provider/provider.dart';


import 'package:shopping_cart_app/models/cart_item.dart';


import 'package:shopping_cart_app/providers/shopping_cart_provider.dart';

class ShoppingCartPage extends StatelessWidget {


@override


Widget build(BuildContext context) {


return Scaffold(


appBar: AppBar(


title: Text('购物车'),


),


body: Consumer<ShoppingCartProvider>(


builder: (context, provider, child) {


return ListView.builder(


itemCount: provider.cartItems.length,


itemBuilder: (context, index) {


CartItem item = provider.cartItems[index];


return ListTile(


title: Text(item.productName),


subtitle: Text('¥${item.productPrice}'),


trailing: Row(


mainAxisSize: MainAxisSize.min,


children: [


IconButton(


icon: Icon(Icons.remove),


onPressed: () {


provider.updateCartItemQuantity(item.id, item.quantity - 1);


},


),


Text('${item.quantity}'),


IconButton(


icon: Icon(Icons.add),


onPressed: () {


provider.updateCartItemQuantity(item.id, item.quantity + 1);


},


),


],


),


onLongPress: () {


provider.removeCartItem(item.id);


},


);


},


);


},


),


);


}


}


6. 集成购物车功能

在主页面或其他页面中,通过调用`ShoppingCartProvider`的`addCartItem`方法将商品添加到购物车:

dart

import 'package:flutter/material.dart';


import 'package:provider/provider.dart';


import 'package:shopping_cart_app/providers/shopping_cart_provider.dart';


import 'package:shopping_cart_app/models/cart_item.dart';

class ProductPage extends StatelessWidget {


@override


Widget build(BuildContext context) {


return Scaffold(


appBar: AppBar(


title: Text('商品列表'),


),


body: ListView.builder(


itemCount: 10,


itemBuilder: (context, index) {


return ListTile(


title: Text('商品${index + 1}'),


onTap: () {


// 添加商品到购物车


Provider.of<ShoppingCartProvider>(context, listen: false).addCartItem(


CartItem(


id: index,


productId: index,


productName: '商品${index + 1}',


productPrice: 100.0,


productQuantity: 1,


),


);


},


);


},


),


);


}


}


总结

本文详细讲解了如何使用Dart语言和Flutter框架实现一个电商APP的购物车功能。通过以上步骤,我们可以实现商品展示、添加、删除、数量调整等功能,为用户提供良好的购物体验。在实际开发过程中,可以根据需求对购物车功能进行扩展和优化。