我尝试创建一个容器,它带有一个手势检测器,可以在onTap上改变颜色,但由于某种原因,它没有这样做。我有一个bool和一个函数来设置状态并改变它,在容器的backgroundColor中,我让它根据bool的颜色来改变。任何建议都将非常感谢。
import 'package:flutter/material.dart';
class VotingButton extends StatefulWidget {
@override
State<VotingButton> createState() => _VotingButtonState();
}
class _VotingButtonState extends State<VotingButton> {
bool savePressed = false;
void buttonPressed() {
setState(() {
if (savePressed == false) {
savePressed == true;
} else if (savePressed == true) {
savePressed == false;
}
});
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(top: 18.0),
child: GestureDetector(
onTap: () {
buttonPressed;
print(savePressed); //stays false for some reason
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6),
color: savePressed ? Colors.blue : Colors.red[400],
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 40),
child: Text(
'I\'ll be Here!',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
),
),
),
);
}
}
4条答案
按热度按时间h5qlskok1#
kadbb4592#
在
GestureDetector
中,您没有正确调用buttonPressed
方法并通过更改为
buttonPressed
方法来优化代码r55awzrz3#
试试这个,我稍微改变了一下你的buttonPressed方法,和手势检测器onTap。希望能有所帮助
jmp7cifd4#
请尝试以下代码: