我确实想在我的底部工作表中实现一个手势检测器,当它调用onTapDown
和GestureDetector
的onTapCancel
函数时,它应该会改变容器的颜色。但是这个函数不会改变任何东西。我还将下面的代码放在一个StatefulWidget
中,以便能够调用setState((){})
。
这是我的代码:
bool enabled = false;
return InkWell(
child: Container(
child: Row(
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 16.0, bottom: 16.0, left: 30.0),
),
Text(
text,
style: TextStyle(
color: (enabled
? textColor
: Colors.black54
),
fontWeight: FontWeight.bold
),
)
],
),
decoration: BoxDecoration(
color: (enabled
? background
: Colors.transparent
)
),
),
onTapDown: (TapDownDetails details){
setState(() {
enabled = true;
});
},
onTapCancel: (){
setState(() {
enabled = false;
});
},
onTap: (){
String r_value;
if(text == sheetText[0]){
r_value = "delete";
} else if(text == sheetText[1]){
r_value = "edit";
} else if(text == sheetText[2]){
r_value = "notification";
} else {
return;
}
Navigator.pop(context, r_value);
},
);
我希望有人能帮助我。
发布于 2018-12-13 04:16:16
从build
方法中删除bool enabled = false;
,因为每次调用setState
时,它都具有相同的值。
将enabled
变量更改为实例字段。
class YourClass ...
bool enabled = false;
..
@override
Widget build(BuildContext context) {
https://stackoverflow.com/questions/53750322
复制相似问题