Files
ReelShort/lib/core/platform/haptics.dart

40 lines
1007 B
Dart

// Author: fruit.com.cn
import 'package:flutter/services.dart';
/// User-action haptic feedback boundary.
abstract interface class Haptics {
/// Feedback for a selection change.
Future<void> selectionClick();
/// Feedback for a primary action.
Future<void> lightImpact();
/// Feedback for a destructive action.
Future<void> mediumImpact();
}
/// Default implementation backed by Flutter's platform haptics.
class FlutterHaptics implements Haptics {
const FlutterHaptics();
@override
Future<void> selectionClick() =>
_ignoreUnavailable(HapticFeedback.selectionClick);
@override
Future<void> lightImpact() => _ignoreUnavailable(HapticFeedback.lightImpact);
@override
Future<void> mediumImpact() =>
_ignoreUnavailable(HapticFeedback.mediumImpact);
Future<void> _ignoreUnavailable(Future<void> Function() feedback) async {
try {
await feedback();
} catch (_) {
// Haptics are optional and may be unavailable on the target device.
}
}
}