onTapDown我确实想在我的底部工作表中实现一个手势检测器,当它调用和onTapCancel的函数时,它应该改变容器的颜色GestureDetector。但该功能并没有改变任何东西。我还将下面的代码放入 a 中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);
},
);
Run Code Online (Sandbox Code Playgroud)
我希望有人能够帮助我。
bool enabled = false;从您的方法中删除build,因为每次调用setState它都会具有相同的值。
将变量更改enabled为实例字段。
class YourClass ...
bool enabled = false;
..
@override
Widget build(BuildContext context) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13968 次 |
| 最近记录: |