GHMall

一、自定义控件类(方法、属性)

1、独立出的控件定义方法
import 'package:flutter/material.dart';
typedef clickCallback = void Function(int value);
typedef clickCallAdd = void Function(int value);
2、将自定义的方法作为控件的属性,在需要相应的地方掉用,然后再在掉用本控件的时候调用本属性方法。
/// 显示数量子控件
class GHCountItemWidger extends StatefulWidget {
  /// 数量
  int count;

  /// 是否可以点击
  bool isEnable;

  final clickCallback addClick;
  final clickCallback subClick;
  GHCountItemWidger({
    Key key,
    this.isEnable = true,
    this.count,
    this.addClick,
    this.subClick,
  }) : super(key: key);

  _GHCountItemWidgerState createState() => _GHCountItemWidgerState();
}
3、内部调用事件,将值添加进去,传到外边。
Widget _rightNumber() {
    return GestureDetector(
      behavior: HitTestBehavior.opaque,
      onTap: () {
        if (!widget.isEnable) {
          print("禁止响应");
          return;
        }
        setState(() {
          this._count++;
        });
        widget.addClick(this._count);
      },
      child: Container(
        decoration: BoxDecoration(
            border: Border.all(
          width: 1,
          color: Colors.black12,
        )),
        child: Row(
          children: [
            Container(
              alignment: Alignment.center,
              width: 20,
              height: 20,
              child: Text("+"),
            ),
          ],
        ),
      ),
    );
  }
4、调用本控件的地方获取方法内传过来的值。
  GHCountItemWidger(
        addClick: (value) {
              setState(() {
                    this._count = value;
                   });
              },
        count: this._count,
  ),

你可能感兴趣的:(GHMall)