如何使用 Flutter 为 Android 和 iOS 实现振动?
How to implement vibration with Flutter for both Android and iOS?
我正在尝试使用 Flutter 在单击按钮时实现振动。
我发现说实话很难。我尝试使用以下软件包失败:
vibration and vibrate 但它们就是不振动(这里说的是真正的设备不是 emulators/simulators)。
是否有关于如何使用 Flutter 在 iOS 和 Android 设备上实现振动的清晰示例指南?
谢谢,
米海
首先,您需要将 vibrate:
添加为 pubspec.yaml
文件的依赖项。
dependencies:
flutter:
sdk: flutter
vibrate:
在此之后,您需要在您正在使用的 class 中导入包。
// Import package
import 'package:vibrate/vibrate.dart';
现在你可以振动:
// Check if the device can vibrate
bool canVibrate = await Vibrate.canVibrate;
// Vibrate
// Vibration duration is a constant 500ms because
// it cannot be set to a specific duration on iOS.
Vibrate.vibrate();
// Vibrate with pauses between each vibration
final Iterable<Duration> pauses = [
const Duration(milliseconds: 500),
const Duration(milliseconds: 1000),
const Duration(milliseconds: 500),
];
// vibrate - sleep 0.5s - vibrate - sleep 1s - vibrate - sleep 0.5s - vibrate
Vibrate.vibrateWithPauses(pauses);
或触觉反馈:
// Choose from any of these available methods
enum FeedbackType {
success,
error,
warning,
selection,
impact,
heavy,
medium,
light
}
var _type = FeedbackType.impact;
Vibrate.feedback(_type);
找到了使用 HapticFeedback.vibrate()
的方法。它适用于 iOS 和 Android。查看有关此 [post][1] 的代码示例和其他设置的更多详细信息:Flutter: How to use HapticFeedback
import 'package:flutter/material.dart';
import 'package:vibrate/vibrate.dart';
// Note:
// Make sure you add the following permissions to your Android Manifest
// <uses-permission android:name="android.permission.VIBRATE"/>
//
// In pubspec.yaml file, add following dependency
// dependencies:
// vibrate: ^0.0.4
class TestVibration extends StatefulWidget {
@override
_TestVibrationState createState() => _TestVibrationState();
}
class _TestVibrationState extends State<TestVibration> {
bool canVibrate = false;
@override
void initState() {
super.initState();
_checkIfVibrate();
}
_checkIfVibrate() async {
// check if device can vibrate
canVibrate = await Vibrate.canVibrate;
}
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(
child: Text('Vibrate'),
onPressed: (){
// FeedbackTypes -> {success, error, warning, selection, impact, heavy, medium, light}
_getVibration(FeedbackType.warning);
},
),
);
}
_getVibration(feedbackType) async {
if (canVibrate) {
Vibrate.feedback(feedbackType);
// Vibrate.vibrate(); // Try this too!
}
}
}
我会推荐使用 flutter_vibrate,它对 ios/ android 都有效。设置更简单,效果很好。
只需在 pubspec.yaml 文件中添加 flutter_vibrate 作为依赖。
依赖项:
振动:^1.4.0
确保将以下权限添加到您的 Android 清单
导入包:
进口'package:vibration/vibration.dart';
示例:
默认振动 500 毫秒:
Vibration.vibrate();
振动 1000 毫秒:
Vibration.vibrate(duration: 1000);
模式:等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒:
Vibration.vibrate(pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500]);
模式:等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒':
Vibration.vibrate( pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500], intensities: [128, 255, 64, 255]);
Android
在 AndroidManifest.xml 中需要 VIBRATE 权限。
支持具有持续时间和模式的振动。在 Android 8 (Oreo) 及更高版本上,使用 [VibrationEffect][1] class。有关其余的使用说明,请参阅 [Vibrator][1] class 文档。
iOS
在 CoreHaptics 设备上支持具有持续时间和模式的振动。在旧设备上,该模式是通过 500 毫秒长的振动来模拟的。您可以使用 hasCustomVibrationsSupport.
检查当前设备是否支持 CoreHaptics
Flutter 2021最简单的解决方案
1) 导入标准服务:
import 'package:flutter/services.dart';
2) 使用:
HapticFeedback.mediumImpact();
或lightImpact
,或heavyImpact
3) 不要忘记在 Android 清单中添加:
<uses-permission android:name="android.permission.VIBRATE"/>
奖金)播放“咔嗒”声:
SystemSound.play(SystemSoundType.click);
我正在尝试使用 Flutter 在单击按钮时实现振动。
我发现说实话很难。我尝试使用以下软件包失败: vibration and vibrate 但它们就是不振动(这里说的是真正的设备不是 emulators/simulators)。
是否有关于如何使用 Flutter 在 iOS 和 Android 设备上实现振动的清晰示例指南?
谢谢, 米海
首先,您需要将 vibrate:
添加为 pubspec.yaml
文件的依赖项。
dependencies:
flutter:
sdk: flutter
vibrate:
在此之后,您需要在您正在使用的 class 中导入包。
// Import package
import 'package:vibrate/vibrate.dart';
现在你可以振动:
// Check if the device can vibrate
bool canVibrate = await Vibrate.canVibrate;
// Vibrate
// Vibration duration is a constant 500ms because
// it cannot be set to a specific duration on iOS.
Vibrate.vibrate();
// Vibrate with pauses between each vibration
final Iterable<Duration> pauses = [
const Duration(milliseconds: 500),
const Duration(milliseconds: 1000),
const Duration(milliseconds: 500),
];
// vibrate - sleep 0.5s - vibrate - sleep 1s - vibrate - sleep 0.5s - vibrate
Vibrate.vibrateWithPauses(pauses);
或触觉反馈:
// Choose from any of these available methods
enum FeedbackType {
success,
error,
warning,
selection,
impact,
heavy,
medium,
light
}
var _type = FeedbackType.impact;
Vibrate.feedback(_type);
找到了使用 HapticFeedback.vibrate()
的方法。它适用于 iOS 和 Android。查看有关此 [post][1] 的代码示例和其他设置的更多详细信息:Flutter: How to use HapticFeedback
import 'package:flutter/material.dart';
import 'package:vibrate/vibrate.dart';
// Note:
// Make sure you add the following permissions to your Android Manifest
// <uses-permission android:name="android.permission.VIBRATE"/>
//
// In pubspec.yaml file, add following dependency
// dependencies:
// vibrate: ^0.0.4
class TestVibration extends StatefulWidget {
@override
_TestVibrationState createState() => _TestVibrationState();
}
class _TestVibrationState extends State<TestVibration> {
bool canVibrate = false;
@override
void initState() {
super.initState();
_checkIfVibrate();
}
_checkIfVibrate() async {
// check if device can vibrate
canVibrate = await Vibrate.canVibrate;
}
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(
child: Text('Vibrate'),
onPressed: (){
// FeedbackTypes -> {success, error, warning, selection, impact, heavy, medium, light}
_getVibration(FeedbackType.warning);
},
),
);
}
_getVibration(feedbackType) async {
if (canVibrate) {
Vibrate.feedback(feedbackType);
// Vibrate.vibrate(); // Try this too!
}
}
}
我会推荐使用 flutter_vibrate,它对 ios/ android 都有效。设置更简单,效果很好。
只需在 pubspec.yaml 文件中添加 flutter_vibrate 作为依赖。
依赖项: 振动:^1.4.0
确保将以下权限添加到您的 Android 清单
导入包:
进口'package:vibration/vibration.dart';
示例:
默认振动 500 毫秒:
Vibration.vibrate();
振动 1000 毫秒:
Vibration.vibrate(duration: 1000);
模式:等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒:
Vibration.vibrate(pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500]);
模式:等待0.5秒,振动1秒,等待0.5秒,振动2秒,等待0.5秒,振动3秒,等待0.5秒,振动0.5秒':
Vibration.vibrate( pattern: [500, 1000, 500, 2000, 500, 3000, 500, 500], intensities: [128, 255, 64, 255]);
Android
在 AndroidManifest.xml 中需要 VIBRATE 权限。
支持具有持续时间和模式的振动。在 Android 8 (Oreo) 及更高版本上,使用 [VibrationEffect][1] class。有关其余的使用说明,请参阅 [Vibrator][1] class 文档。iOS
在 CoreHaptics 设备上支持具有持续时间和模式的振动。在旧设备上,该模式是通过 500 毫秒长的振动来模拟的。您可以使用 hasCustomVibrationsSupport.
检查当前设备是否支持 CoreHapticsFlutter 2021最简单的解决方案
1) 导入标准服务:
import 'package:flutter/services.dart';
2) 使用:
HapticFeedback.mediumImpact();
或lightImpact
,或heavyImpact
3) 不要忘记在 Android 清单中添加:
<uses-permission android:name="android.permission.VIBRATE"/>
奖金)播放“咔嗒”声:
SystemSound.play(SystemSoundType.click);