IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> flutter购物车 -> 正文阅读

[移动开发]flutter购物车

import 'package:flutter/cupertino.dart';

import 'package:flutter/material.dart';

import 'package:flutter_app/widget/custom_check.dart';

import 'package:flutter_slidable/flutter_slidable.dart';

class ImproShop extends StatefulWidget {

? ImproShop({Key key}) : super(key: key);

? @override

? _ImproShopState createState() => _ImproShopState();

}

class _ImproShopState extends State<ImproShop> {

? //是否管理

? bool isManger = true;

? bool value = false;

? List list = [

? ? {

? ? ? "id": 1,

? ? ? "title": "珍珠白,美白就用珍珠白",

? ? ? "subTitle": "有你白的更闪耀",

? ? ? "moeny": "99",

? ? ? "number": "1",

? ? ? "value": false,

? ? },

? ? {

? ? ? "id": 2,

? ? ? "title": "珍珠白,美白就用珍珠白",

? ? ? "subTitle": "有你白的更闪耀",

? ? ? "moeny": "88",

? ? ? "number": "1",

? ? ? "value": false,

? ? },

? ? {

? ? ? "id": 3,

? ? ? "title": "珍珠白,美白就fndsjjkfdjkfbfhfghfghdsgfdhdfhfghjdgfjd用珍珠白",

? ? ? "subTitle": "有你白的更闪耀",

? ? ? "moeny": "200",

? ? ? "number": "1",

? ? ? "value": false,

? ? },

? ? {

? ? ? "id": 4,

? ? ? "title": "珍珠白,美白就用珍珠白",

? ? ? "subTitle": "有你白的更闪耀",

? ? ? "moeny": "188",

? ? ? "number": "1",

? ? ? "value": false,

? ? },

? ];

? @override

? Widget build(BuildContext context) {

? ? return Scaffold(

? ? ? appBar: AppBar(

? ? ? ? title: Text("购物车"),

? ? ? ? actions: [

? ? ? ? ? InkWell(

? ? ? ? ? ? onTap:(){

? ? ? ? ? ? ? setState(() {

? ? ? ? ? ? ? ? this.isManger = !this.isManger;

? ? ? ? ? ? ? });

? ? ? ? ? ? },

? ? ? ? ? ? child: Center(

? ? ? ? ? ? ? child:Padding(padding: EdgeInsets.only(right: 10),

? ? ? ? ? ? ? child: Text(isManger?"管理":"恢复"),),

? ? ? ? ? ? ),

? ? ? ? ? )

? ? ? ? ],

? ? ? ),

? ? ? bottomNavigationBar: BottomAppBar(

? ? ? ? child: Container(

? ? ? ? ? height: 50,

? ? ? ? ? decoration:const BoxDecoration(

? ? ? ? ? ? border:Border(

? ? ? ? ? ? ? top:BorderSide(

? ? ? ? ? ? ? ? color: Colors.grey,

? ? ? ? ? ? ? ? width: 0.5

? ? ? ? ? ? ? )

? ? ? ? ? ? )

? ? ? ? ? ),

? ? ? ? ? child: Padding(padding: EdgeInsets.only(

? ? ? ? ? ? left: 20,right: 20,

? ? ? ? ? ),

? ? ? ? ? child: Row(

? ? ? ? ? ?mainAxisAlignment: MainAxisAlignment.spaceBetween,

? ? ? ? ? children: [

? ? ? ? ? ? Row(

? ? ? ? ? ? ? mainAxisSize: MainAxisSize.min,

? ? ? ? ? ? ? children: [

? ? ? ? ? ? ? ? ?CustomCheck((){

? ? ? ? ? ? ? setState(() {

? ? ? ? ? ? ? ? this.value = !this.value;

? ? ? ? ? ? ? });

? ? ? ? ? ? ? _checkAll(this.value);

? ? ? ? ? ? }, this.value),

? ? ? ? ? ? ? ? Padding(padding: EdgeInsets.only(left: 10),

? ? ? ? ? ? child: Text("全选"),),

? ? ? ? ? ?

? ? ? ? ? ? ? ],

? ? ? ? ? ? ),

? ? ? ? ? ?isManger?Text("共:¥${getTotal()}",style: TextStyle(

? ? ? ? ? ? ? fontWeight: FontWeight.w700,

? ? ? ? ? ? ? fontSize: 18,

? ? ? ? ? ? ? color: Colors.pink

? ? ? ? ? ? ),):InkWell(

? ? ? ? ? ? ? onTap: (){

? ? ? ? ? ? ? ? ? _deleteItems();

? ? ? ? ? ? ? },

? ? ? ? ? ? ? child:Container(

? ? ? ? ? ? ? ? padding: EdgeInsets.only(top:5,bottom: 5,left: 10,right: 10),

? ? ? ? ? ? ? ? decoration: BoxDecoration(

? ? ? ? ? ? ? ? ? border: Border.all(

? ? ? ? ? ? ? ? ? ? color: Colors.pink[200],

? ? ? ? ? ? ? ? ? ? width: 0.5

? ? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? ? borderRadius: BorderRadius.all(Radius.circular(10))

? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? child: Text("删除",style: TextStyle(

? ? ? ? ? ? ? ? ? color: Colors.pink

? ? ? ? ? ? ? ? ),),

? ? ? ? ? ? ? ),

? ? ? ? ? ? )

? ? ? ? ? ],

? ? ? ? ? ),

? ? ? ? ? ),

? ? ? ? ),),

? ? ? body: ListView(

? ? ? ? children: _item(),

? ? ? ),

? ? );

? }

? List<Widget> _item() {

? ? List<Widget> arr = [];

? ? // arr.add(Text("我是循环的"));

? ? Widget item;

? ? for (var index = 0; index < list.length; index++) {

? ? ?

? ? ? item = Slidable(

? ? ? ? key:ValueKey(index) ,

? ? ? ? //右滑

? ? ? ? endActionPane:ActionPane(

? ? ? ? ? motion:ScrollMotion(),

? ? ? ? ? children:[

? ? ? ? ? ? SlidableAction(

? ? ? ? ? ? ? onPressed:(value){

? ? ? ? ? ? ? ? _removeItem(list[index]);

? ? ? ? ? ? ? },

? ? ? ? ? ? ? icon: Icons.delete,

? ? ? ? ? ? ? label:"删除",

? ? ? ? ? ? ? backgroundColor: Colors.orange,

? ? ? ? ? ? )

? ? ? ? ? ]

? ? ? ? ) ,

? ? ? ? child: Container(

? ? ? ? width: double.infinity,

? ? ? ? // height: 100,

? ? ? ? padding: EdgeInsets.all(10.0),

? ? ? ? child: Row(

? ? ? ? ? mainAxisSize: MainAxisSize.max,

? ? ? ? ? children: [

? ? ? ? ? ? Container(

? ? ? ? ? ? ? child: CustomCheck(() {

? ? ? ? ? ? ? ? setState(() {

? ? ? ? ? ? ? ? ? list[index]["value"] = !list[index]["value"];

? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? getTotal();

? ? ? ? ? ? ? ? // print("打印数组list${list}");

? ? ? ? ? ? ? }, list[index]["value"]),

? ? ? ? ? ? ),

? ? ? ? ? ? ?Container(

? ? ? ? ? ? ? ?padding: EdgeInsets.only(left: 5),

? ? ? ? ? ? ? ? height: 64,

? ? ? ? ? ? ? ? width: 64,

? ? ? ? ? ? ? ? child: Image.network(

? ? ? ? ? ? ? ? ? "https://img1.baidu.com/it/u=1849701997,2238263017&fm=26&fmt=auto",

? ? ? ? ? ? ? ? ? fit: BoxFit.cover,

? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ),

? ? ? ? ? ? _rightItem(list[index], index),

? ? ? ? ? ],

? ? ? ? ),

? ? ? ),

? ? ? );

? ? ?

? ? ? arr.add(item);

? ? }

? ? return arr;

? }

? //右边

? _rightItem(Map e, int index) {

? ? return Expanded(

? ? ? ? child: Padding(

? ? ? ? ? ? padding: EdgeInsets.only(left: 10,right: 20),

? ? ? ? ? ? child: Column(

? ? ? ? ? ? ? crossAxisAlignment: CrossAxisAlignment.start,

? ? ? ? ? ? ? mainAxisSize: MainAxisSize.min,

? ? ? ? ? ? ? children: [

? ? ? ? ? ? ? ? Container(

? ? ? ? ? ? ? ? ? child: Text(

? ? ? ? ? ? ? ? ? ? e["title"],

? ? ? ? ? ? ? ? ? ? style: TextStyle(

? ? ? ? ? ? ? ? ? ? ? ? overflow: TextOverflow.ellipsis,

? ? ? ? ? ? ? ? ? ? ? ? fontWeight: FontWeight.bold,

? ? ? ? ? ? ? ? ? ? ? ? fontSize: 14),

? ? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? Padding(

? ? ? ? ? ? ? ? ? padding: EdgeInsets.only(top: 5),

? ? ? ? ? ? ? ? ? child: Text(

? ? ? ? ? ? ? ? ? ? e["subTitle"],

? ? ? ? ? ? ? ? ? ? style:

? ? ? ? ? ? ? ? ? ? ? ? TextStyle(fontSize: 10.0, fontWeight: FontWeight.w400),

? ? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? Padding(

? ? ? ? ? ? ? ? ? padding: EdgeInsets.only(top: 5),

? ? ? ? ? ? ? ? ? child: Row(

? ? ? ? ? ? ? ? ? ? mainAxisAlignment: MainAxisAlignment.spaceBetween,

? ? ? ? ? ? ? ? ? ? children: [

? ? ? ? ? ? ? ? ? ? ? Text(e["moeny"]),

? ? ? ? ? ? ? ? ? ? ? _numInput(e,index),

? ? ? ? ? ? ? ? ? ? ],

? ? ? ? ? ? ? ? ? ),

? ? ? ? ? ? ? ? )

? ? ? ? ? ? ? ],

? ? ? ? ? ? )

? ? ? ? ? ? )

? ? ? ? ? ? );

? }

? //购物车数量加减

? _numInput(Map e,int index) {

? ? return Row(

? ? ? mainAxisSize: MainAxisSize.min,

? ? ? children: [

? ? ? ? IconButton(onPressed: (){

? ? ? ? ? if(int.parse(e["number"])>1){

? ? ? ? ? ? int number = int.parse(e["number"]);

? ? ? ? ? ? number--;

? ? ? ? ? ? // print("打印减了之后得${number}");

? ? ? ? ? ? setState(() {

? ? ? ? ? ? ? list[index]["number"] = number.toString();

? ? ? ? ? ? });

? ? ? ? ? ? getTotal();

? ? ? ? ? }

? ? ? ? },

? ? ? ? icon: Icon(Icons.remove,size: 12.0,),

? ? ? ? ),

? ? ? ? Padding(padding: EdgeInsets.only(left: 5,right: 5),

? ? ? ? child: Text(e["number"]),),

? ? ? ? IconButton(onPressed: (){

? ? ? ? ? int addNumber = int.parse(e["number"]);

? ? ? ? ? ? addNumber++;

? ? ? ? ? ? setState(() {

? ? ? ? ? ? ? list[index]["number"] = addNumber.toString();

? ? ? ? ? ? });

? ? ? ? ? ? getTotal();

? ? ? ? }, icon: Icon(Icons.add,size: 12.0,))

? ? ? ],

? ? );

? }

? //获取价格

? String getTotal(){

? ? var arr ;

? ? double total = 0;

? ? arr = list.where((e){

? ? ?return e["value"] == true;

? ? });

? ? print("新组成得数组是${arr}");

? ? if(arr.toList().length == ?list.length){

? ? ? setState(() {

? ? ? ? this.value = true;

? ? ? });

? ? }

? ? else{

? ? ? setState(() {

? ? ? ? this.value = false;

? ? ? });

? ? }

? ? ?arr.toList().forEach((e) {

? ? ? ?total = total + double.parse(e["moeny"])*double.parse(e["number"]);

? ? ?});

? ? return total.toString();

? }

? //全选

? void _checkAll(bool value) {

? ? var newArr;

? ? if(this.value){

? ? ? newArr = list.map((e){

? ? ? ? return {...e,"value":true};

? ? ? });

? ? }

? ? else{

? ? ? newArr = list.map((e){

? ? ? ? return {...e,"value":false};

? ? ? } );

? ? }

? ? setState(() {

? ? ? this.list = newArr.toList();

? ? });

? ? print("全选之后得数组${list}");

? }


?

? //删除某一项

? void _removeItem(e) {

? ? ? list.remove(e);

? ? ? setState(() {

? ? ? ? this.list = list;

? ? ? });

? }

? //删除选中的

? void _deleteItems() {

? ? var deleArr;

? ? deleArr =list.where((e){

? ? ? return e["value"] == false;

? ? });

? ? setState(() {

? ? ? list = deleArr.toList();

? ? });

? }

}

//自定义多选框

import 'package:flutter/cupertino.dart';

import 'package:flutter/material.dart';


?

class CustomCheck extends StatefulWidget {

? final VoidCallback checkTap;

? final bool isChecked ;

? const CustomCheck( this.checkTap, this.isChecked,{Key key}) : super(key: key);

? @override

? _CustomCheckState createState() => _CustomCheckState();

}

class _CustomCheckState extends State<CustomCheck> {

? @override

? Widget build(BuildContext context) {

? ? return InkWell(

? ? ? onTap: widget.checkTap,

? ?

? ? ? child: ClipRRect(

? ? ? ? borderRadius: BorderRadius.all(Radius.circular(10)),

? ? ? ? child: Container(

? ? ? ? height: 20,

? ? ? ? width: 20,

? ? ? ? decoration: BoxDecoration(

? ? ? ?

? ? ? ? ? ?borderRadius: BorderRadius.all(Radius.circular(10)),

? ? ? ? ? border: Border.all(

? ? ? ? ? ? color: Colors.grey,

? ? ? ? ? ? width: 1.0

? ? ? ? ? ),

? ? ? ? ),

? ? ? ? child:

? ? ? ? Padding(padding: EdgeInsets.all(4),

? ? ? ? ? child: ?Container(

? ? ? ? ? ? decoration: BoxDecoration(

? ? ? ? ? ? ? color:widget.isChecked?Colors.blue:Colors.white,

? ? ? ? ? ? ? borderRadius: BorderRadius.all(Radius.circular(6))

? ? ? ? ? ? ),

? ? ? ? ?

? ? ? ? )

? ? ? ? )

? ? ? ?

? ? ? ?

? ? ? ),

? ? ? )

? ? ?

? ? );

? }

?

}

?

?

?

?

?

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:09:04  更:2021-12-03 13:09:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:38:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码