一、自定义控件类(方法、属性)
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,
),