mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 13:08:42 +00:00
added haptic feedback
This commit is contained in:
parent
674e42722d
commit
180c0679ed
3 changed files with 21 additions and 5 deletions
|
|
@ -52,6 +52,7 @@
|
||||||
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
|
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.READ_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:
|
<!-- Required to query activities that can process text, see:
|
||||||
https://developer.android.com/training/package-visibility and
|
https://developer.android.com/training/package-visibility and
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
|
||||||
class SlidingResponse extends StatefulWidget {
|
class SlidingResponse extends StatefulWidget {
|
||||||
|
|
@ -17,19 +18,27 @@ class SlidingResponse extends StatefulWidget {
|
||||||
|
|
||||||
class _SlidingResponseWidgetState extends State<SlidingResponse> {
|
class _SlidingResponseWidgetState extends State<SlidingResponse> {
|
||||||
double _offset = 0.0;
|
double _offset = 0.0;
|
||||||
|
bool gotFeedback = false;
|
||||||
|
|
||||||
void _onHorizontalDragUpdate(DragUpdateDetails details) {
|
void _onHorizontalDragUpdate(DragUpdateDetails details) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_offset += details.delta.dx;
|
_offset += details.delta.dx;
|
||||||
if (_offset > 50) {
|
if (_offset > 40) {
|
||||||
_offset = 50;
|
_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) {
|
void _onHorizontalDragEnd(DragEndDetails details) {
|
||||||
if (_offset >= 50) {
|
if (_offset >= 40) {
|
||||||
widget.onResponseTriggered();
|
widget.onResponseTriggered();
|
||||||
}
|
}
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
@ -49,7 +58,7 @@ class _SlidingResponseWidgetState extends State<SlidingResponse> {
|
||||||
child: widget.child,
|
child: widget.child,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (_offset >= 50)
|
if (_offset >= 40)
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 20,
|
left: 20,
|
||||||
top: 0,
|
top: 0,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:pie_menu/pie_menu.dart';
|
import 'package:pie_menu/pie_menu.dart';
|
||||||
import 'package:twonly/globals.dart';
|
import 'package:twonly/globals.dart';
|
||||||
|
|
@ -28,6 +29,11 @@ class _UserContextMenuState extends State<UserContextMenu> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PieMenu(
|
return PieMenu(
|
||||||
onPressed: () => (),
|
onPressed: () => (),
|
||||||
|
onToggle: (menuOpen) {
|
||||||
|
if (menuOpen) {
|
||||||
|
HapticFeedback.heavyImpact();
|
||||||
|
}
|
||||||
|
},
|
||||||
actions: [
|
actions: [
|
||||||
if (!widget.contact.archived)
|
if (!widget.contact.archived)
|
||||||
PieAction(
|
PieAction(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue