gpt4 book ai didi

flutter - 如何使用RawMaterialButton中的onLongPressed属性连续增加或减少值?

转载 作者:行者123 更新时间:2023-12-03 03:35:13 25 4
gpt4 key购买 nike

我正在制作具有以下元素的应用程序

enter image description here

我的丁字代码是:-

RawMaterialButton(
child: Icon(
symbol,
color: Colors.white,
),
constraints: BoxConstraints.tightFor(
width: 56.0,
height: 56.0,
),
shape: CircleBorder(),
fillColor: Color(0xFF4C4F5E),
elevation: 6.0,
onPressed: action,
)
action是用户定义的函数。我想要它,以便如果我不断按下加号或减号按钮,该值将相应地增加或减少。我怎样才能做到这一点?我想避免使用 Timer类,而更喜欢使用循环。

最佳答案

您可以很容易地使用Timer来完成此操作,但是由于您不想使用它,因此必须使用future(async)来实现。

我为您制作了以下演示。希望对您有所帮助。

 int counter = 0;
bool ontap = false;

subtract() async {
await Future.delayed(Duration(milliseconds: 100));
setState(() {
counter--;
});
if (ontap) {
subtract();
}
}

addcounter() async {
await Future.delayed(Duration(milliseconds: 100));
setState(() {
counter++;
});
if (ontap) {
addcounter();
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
counter.toString(),
style: TextStyle(fontSize: 30, color: Colors.red),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
// ontap = true;
subtract();
},
onLongPress: () {
ontap = true;
subtract();
},
onLongPressEnd: (_) {
setState(() {
ontap = false;
});
},
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.red,
),
child: Icon(Icons.remove),
),
),
SizedBox(
width: 20,
),
GestureDetector(
onTap: () {
addcounter();
},
onLongPress: () {
ontap = true;
addcounter();
},
onLongPressEnd: (_) {
setState(() {
ontap = false;
});
},
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.red,
),
child: Icon(Icons.add),
),
)
],
)
],
),
),
);
}

关于flutter - 如何使用RawMaterialButton中的onLongPressed属性连续增加或减少值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61525162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com