我有一个CupertinoSwitch,可以很好地滑动,但我也希望在点击时更改它。
我尝试将其包装在墨水池和手势检测器中,并设置如下值:
GestureDetector(
child: CupertinoSwitch(
value: notificationsAllowed,
activeColor: Colors.orange,
onChanged: (notificationsSelection) {
userProfile
.userNotificationsPermitted =
notificationsSelection;
},
),
onTap: (){
setState(() {
print ('tapped');
notificationsAllowed = true;
});
},
),
但是我发现墨水池没有对准水龙头,我想是因为它没有获得聚焦。
我同时尝试了墨水瓶和笔势,但是我不确定为什么它没有注册点击事件。
谢谢
答案 0 :(得分:0)
GestureDetector(
child: Container(
width: 42.0,
height: 24.0,
color: Colors.white,
padding: EdgeInsets.symmetric(21.0),
child: CupertinoSwitch(
value: notificationsAllowed,
activeColor: Colors.orange,
onChanged: (notificationsSelection) {
userProfile
.userNotificationsPermitted =
notificationsSelection;
},
),
),
onTap: (){
setState(() {
print ('tapped');
notificationsAllowed = true;
});
},
),
但是 CupertinoSwitch onChanged 方法不起作用!
答案 1 :(得分:0)
GestureDetector 不能在 CupertinoSwitch 上工作。它们不能同时处理一个水龙头,因此一次只能使用一个。
<块引用>我也希望它在我点击它时进行更改。
我不确定你的意思。如果要将开关的状态更改为开或关,可以通过更改 CupertinoSwitch 的 value 属性来实现。由于您使用的是通知允许作为 CupertinoSwitch 的值,因此请在 onChanged 中更改它的值。
CupertinoSwitch(
value: notificationsAllowed,
activeColor: Colors.orange,
onChanged: (notificationsSelection) {
notificationsAllowed = !notificationsAllowed; //add this
userProfile
.userNotificationsPermitted =
notificationsSelection;
},
),