Flutter 自定义数字增减器组件
一、效果说明要实现以下的效果:点击加减可以增减内部的数字。二、代码示例class NumChangeWidget extends StatefulWidget {final height;int num;final ValueChanged<int> onValueChanged;NumChangeWidget({Key key, th...
·
一、效果说明
要实现以下的效果:

点击加减可以增减内部的数字。
二、代码示例
class NumChangeWidget extends StatefulWidget {
final double height;
int num;
final ValueChanged<int> onValueChanged;
NumChangeWidget({Key key, this.height = 36.0, this.num = 0, this.onValueChanged}) : super(key: key);
@override
_NumChangeWidgetState createState() {
return _NumChangeWidgetState();
}
}
class _NumChangeWidgetState extends State<NumChangeWidget> {
@override
Widget build(BuildContext context) {
return Container(
height: widget.height,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(2.0)),
border: Border.all(color: Colors.grey, width: 0.5),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
GestureDetector(
onTap: _minusNum,
child: Container(
width: 32.0,
alignment: Alignment.center,
child: Image.asset(AssetsImages.NUM_MINUS), // 设计图
),
),
Container(
width: 0.5,
color: Colors.grey,
),
Container(
width: 62.0,
alignment: Alignment.center,
child: Text(widget.num.toString(), maxLines: 1, style: TextStyle(fontSize: 20.0, color: Colors.black),),
),
Container(
width: 0.5,
color: Colors.grey,
),
GestureDetector(
onTap: _addNum,
child: Container(
width: 32.0,
alignment: Alignment.center,
child: Image.asset(AssetsImages.NUM_ADD), // 设计图
),
),
],
),
);
}
void _minusNum() {
if (widget.num == 0) {
return;
}
setState(() {
widget.num -= 1;
if (widget.onValueChanged != null) {
widget.onValueChanged(widget.num);
}
});
}
void _addNum() {
setState(() {
widget.num += 1;
if (widget.onValueChanged != null) {
widget.onValueChanged(widget.num);
}
});
}
}
不到 100 行代码搞定,是不是很简单呢 !
更多推荐


所有评论(0)