Flutter:如何使用HapticFeedback

32

我已经导入了

import 'package:flutter/services.dart';

然后称之为

HapticFeedback.lightImpact();

什么都没有发生。我需要做些什么才能让它工作? 我正在使用最新的Flutter版本1.6.6在运行Android 9.0的Galaxy S8上进行测试。


根据官方文档 (https://api.flutter.dev/flutter/services/HapticFeedback/lightImpact.html),它应该也可以在安卓系统上工作。您尝试过其他静态方法,如selectionClick吗?如果仍然不起作用,也许您可以提供一个代码示例,在您的情况下它不起作用。 - kounex
这是我的答案,适用于Android和iOS:https://dev59.com/questions/l1MI5IYBdhLWcg3wXaPZ#63622425 - Cassio Seffrin
7个回答

31
请确保在Android设备上启用了振动反馈,并确保添加了以下内容:
 <uses-permission android:name="android.permission.VIBRATE" />

到AndroidManifest.xml文件中进行更改。 在此处查看更多信息:https://github.com/flutter/flutter/issues/33750


2
@ChiragChopra 请确保设备启用了振动反馈功能,请参考此评论 - https://github.com/flutter/flutter/issues/33750#issuecomment-499703756 - Sergey

12

import 'package:flutter/services.dart';

  1. 导入 services 包

然后在 onTap 方法内部:

onTap: () { Clipboard.setData(ClipboardData(text: data)); HapticFeedback.heavyImpact(); }

这对我起作用了。


这对我不起作用,最终我不得不使用Vibrate包,但我想知道为什么这个本地实现似乎不起作用。 - Rishabh Agrawal

11
请确认设备上是否启用了“振动反馈”设置。我曾经遇到同样的问题,但后来发现我的设备上关闭了触觉反馈振动(我是在 Android 9 上测试的),所以确保启用它。
要启用它,请执行以下操作:
转到设置 > 声音和振动 > 触摸振动

谢谢,那就是我的问题了。我的三星S21在设置中搜索系统震动 -> 触摸交互。 - undefined

6

6

这对我有所帮助

首先,打开AndroidManifest文件并添加以下内容:

<uses-permission android:name="android.permission.VIBRATE" />

如果Flutter应用正在运行,请停止它并再次运行。然后使用以下代码:

import 'package:flutter/services.dart';

在Ontap或OnPressed方法中

Clipboard.setData(ClipboardData());
HapticFeedback.heavyImpact();

这就是全部。


4

阅读函数说明,可以看到:

"在Android上,这使用HapticFeedbackConstants.KEYBOARD_TAP。"

如果手机的震动反馈或键盘的触觉反馈已关闭,则调用HapticFeedback.mediumImpact();将没有效果。

为了解决这个问题,需要在手机设置中打开触摸震动


-3

如果只是在手机上激活触摸震动不能解决问题,尝试在“轻敲时振动”模式之间切换。默认设置为关闭

Vibrate on tap (Settings -Off(default),Ligh,Medium,Strong)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接