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){
                                    
         }),

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值