added haptic feedback

This commit is contained in:
otsmr 2025-06-25 22:41:21 +02:00
parent 674e42722d
commit 180c0679ed
3 changed files with 21 additions and 5 deletions

View file

@ -52,6 +52,7 @@
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and

View file

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class SlidingResponse extends StatefulWidget {
@ -17,19 +18,27 @@ class SlidingResponse extends StatefulWidget {
class _SlidingResponseWidgetState extends State<SlidingResponse> {
double _offset = 0.0;
bool gotFeedback = false;
void _onHorizontalDragUpdate(DragUpdateDetails details) {
setState(() {
_offset += details.delta.dx;
if (_offset > 50) {
_offset = 50;
if (_offset > 40) {
_offset = 40;
if (!gotFeedback) {
HapticFeedback.heavyImpact();
gotFeedback = true;
}
if (_offset < 0) _offset = 0;
}
if (_offset < 30) {
gotFeedback = false;
}
if (_offset <= 0) _offset = 0;
});
}
void _onHorizontalDragEnd(DragEndDetails details) {
if (_offset >= 50) {
if (_offset >= 40) {
widget.onResponseTriggered();
}
setState(() {
@ -49,7 +58,7 @@ class _SlidingResponseWidgetState extends State<SlidingResponse> {
child: widget.child,
),
),
if (_offset >= 50)
if (_offset >= 40)
Positioned(
left: 20,
top: 0,

View file

@ -1,5 +1,6 @@
import 'package:drift/drift.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:pie_menu/pie_menu.dart';
import 'package:twonly/globals.dart';
@ -28,6 +29,11 @@ class _UserContextMenuState extends State<UserContextMenu> {
Widget build(BuildContext context) {
return PieMenu(
onPressed: () => (),
onToggle: (menuOpen) {
if (menuOpen) {
HapticFeedback.heavyImpact();
}
},
actions: [
if (!widget.contact.archived)
PieAction(