Flutter商城的类型的计数器
flutter商城类型增加减少产品数量的计数器,
效果图
/// 默认数是1
final int count ;
/// 是否显示删除提示框 默认是true
final bool isShowDialog ;
/// 允许最大数量默认是5
final int maxCount;
/// 点击加号的回调方法
final _AddCallBack addCallBack;
/// 点击减号的回调方法
final _MzeCallBack mzeCallBack;
/// 点击提示框删除的回调方法
final _EnterDelete enterDelete;
直接上代码
-
import 'package:flutter/material.dart';
-
import 'package:get/get.dart';
-
import 'package:bruno/bruno.dart';
-
-
typedef _AddCallBack = void Function(int selectIndex,);
-
typedef _MzeCallBack = void Function(int selectIndex,);
-
typedef _EnterDelete = void Function(int selectIndex,);
-
-
-
class CounterPage extends StatefulWidget {
-
-
/// 默认数
-
final int count ;
-
-
/// 是否显示删除提示框
-
final bool isShowDialog ;
-
-
/// 允许最大数量
-
final int maxCount;
-
-
/// 点击加号的回调方法
-
final _AddCallBack addCallBack;
-
/// 点击减号的回调方法
-
final _MzeCallBack mzeCallBack;
-
/// 点击提示框删除的回调方法
-
final _EnterDelete enterDelete;
-
-
const CounterPage({Key? key,this.count = 1,required this.addCallBack,required this.mzeCallBack,required this.enterDelete,
-
this.isShowDialog = true,this.maxCount = 5}) : super(key: key);
-
-
@override
-
_CounterPageState createState() => _CounterPageState();
-
}
-
-
class _CounterPageState extends State<CounterPage> {
-
-
late int count ;
-
-
@override
-
void initState() {
-
// TODO: implement initState
-
super.initState();
-
count = widget.count;
-
}
-
-
@override
-
Widget build(BuildContext context) {
-
-
-
return Container(
-
child: Row(
-
children: [
-
Container(
-
padding: const EdgeInsets.only(bottom: 9),
-
child: IconButton(onPressed: (){
-
-
if(count == 1){
-
if(widget.isShowDialog==true){
-
BrnDialogManager.showConfirmDialog(context,
-
cancel: '取消', confirm: '确定',message: '确定要删除',title: '温馨提示',onCancel: (){
-
Navigator.of(context).pop();
-
},onConfirm: (){
-
widget.enterDelete(count);
-
Navigator.of(context).pop();
-
}
-
);
-
}
-
count == 1;
-
return;
-
}else{
-
count--;
-
}
-
widget.mzeCallBack(count,);
-
-
setState(() {
-
-
});
-
}, icon: const Icon(Icons.minimize_rounded),iconSize: 15,color: Colors.grey,),
-
),
-
Container(
-
height: 25,
-
alignment: Alignment.center,
-
width: 35,
-
color: Colors.grey.shade200,
-
child: Text('$count',style: const TextStyle(fontWeight: FontWeight.w800),),
-
),
-
IconButton(
-
onPressed: (){
-
if(count ==widget.maxCount){
-
return;
-
}
-
print(count);
-
if(count<10){
-
count ;
-
}
-
widget.addCallBack(count);
-
setState(() {
-
-
});
-
}, icon: const Icon(Icons.add_rounded),iconSize: 15,color: Colors.grey,),
-
],
-
),
-
);
-
}
-
}
使用:
-
CounterPage(addcallback: (c){
-
-
}, mzecallback: (c){
-
-
}, enterDelete: (c){
-
-
}),
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgjeich
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13