点击标签小部件时如何关闭快速拨号?
How to close flutter speed dial when tap on a label widget?
有没有办法在点击 label
小部件时关闭抖动 speedDial
?。我没有使用 SpeedDial 的 child
属性,但它有那个功能。目前,当我点击一个标签小部件时,它会一直停留到我手动关闭该小部件为止。甚至改变 SpeedDial 小部件的子 属性 的方法就足够了,而我想要一个像图片中那样的自定义形状。
Navigator.pop() did not work
SpeedDial(
buttonSize: const Size(45, 45),
animatedIcon: AnimatedIcons.menu_close,
children: [
SpeedDialChild(
labelWidget: GestureDetector(
onTap: () async {
Feedback.forTap(context);
await _crudStorage.deleteAllTask();
},
child: Container(
height: 50.0,
decoration: BoxDecoration(
color:
Theme.of(context).cardColor,
border: Border.all(width: 2.0),
borderRadius:
BorderRadius.circular(30.0),
),
child: Row(
children: [
const Padding(
padding: EdgeInsets.only(
left: 12.0, right: 8.0),
child:
Text('Clear all tasks'),
),
Padding(
padding:
const EdgeInsets.only(
right: 8.0),
child: SvgPicture.asset(
'assets/svg/all.svg',
),
),
],
),
),
),
),
],
)
不要使用 async & await on tap 使用单独的函数来调用
https://tutorialmeta.com/question/how-to-call-async-function-with-ontap-flutter
参考上述link
原来如此简单。此外,开发团队在 pub.dev go to pub 的官方扩展页面上提供了如何实现这一点。我将提及相同的文档供您参考:
首先你需要创建一个值通知器:
ValueNotifier<bool> isDialOpen = ValueNotifier(false);
然后在您的 SpeedDial 中将 openCloseDial 设置为 isDialOpen:
SpeedDial(
...
openCloseDial: isDialOpen,
...
)
现在可以更改拨号打开状态:
isDialOpen.value = false;
示例:只需在 onTap
回调中将值设置为 false
:)
onTap: () async {
Feedback.forTap(context);
await _crudStorage.deleteAllTask();
isDialOpen.value = false;
},
有没有办法在点击 label
小部件时关闭抖动 speedDial
?。我没有使用 SpeedDial 的 child
属性,但它有那个功能。目前,当我点击一个标签小部件时,它会一直停留到我手动关闭该小部件为止。甚至改变 SpeedDial 小部件的子 属性 的方法就足够了,而我想要一个像图片中那样的自定义形状。
Navigator.pop() did not work
SpeedDial(
buttonSize: const Size(45, 45),
animatedIcon: AnimatedIcons.menu_close,
children: [
SpeedDialChild(
labelWidget: GestureDetector(
onTap: () async {
Feedback.forTap(context);
await _crudStorage.deleteAllTask();
},
child: Container(
height: 50.0,
decoration: BoxDecoration(
color:
Theme.of(context).cardColor,
border: Border.all(width: 2.0),
borderRadius:
BorderRadius.circular(30.0),
),
child: Row(
children: [
const Padding(
padding: EdgeInsets.only(
left: 12.0, right: 8.0),
child:
Text('Clear all tasks'),
),
Padding(
padding:
const EdgeInsets.only(
right: 8.0),
child: SvgPicture.asset(
'assets/svg/all.svg',
),
),
],
),
),
),
),
],
)
不要使用 async & await on tap 使用单独的函数来调用
https://tutorialmeta.com/question/how-to-call-async-function-with-ontap-flutter
参考上述link
原来如此简单。此外,开发团队在 pub.dev go to pub 的官方扩展页面上提供了如何实现这一点。我将提及相同的文档供您参考:
首先你需要创建一个值通知器:
ValueNotifier<bool> isDialOpen = ValueNotifier(false);
然后在您的 SpeedDial 中将 openCloseDial 设置为 isDialOpen:
SpeedDial(
...
openCloseDial: isDialOpen,
...
)
现在可以更改拨号打开状态:
isDialOpen.value = false;
示例:只需在 onTap
回调中将值设置为 false
:)
onTap: () async {
Feedback.forTap(context);
await _crudStorage.deleteAllTask();
isDialOpen.value = false;
},