Skip to content

Commit 110bc75

Browse files
author
Volodymyr Oliinyk
committed
updated shake detector widget
1 parent de695ca commit 110bc75

File tree

5 files changed

+66
-79
lines changed

5 files changed

+66
-79
lines changed

lib/logger_flutter.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
library logger_flutter;
33

44
import 'dart:collection';
5-
import 'dart:io';
65

7-
import 'package:flutter/cupertino.dart';
86
import 'package:flutter/material.dart';
97
import 'package:logger/logger.dart';
108

119
import 'src/ansi_parser.dart';
12-
import 'src/shake_detector.dart';
10+
11+
export 'src/shake/default_shake_detector.dart';
12+
export 'src/shake/shake_detector.dart';
13+
export 'src/shake_detector_widget.dart';
1314

1415
part 'src/log_console.dart';
15-
part 'src/log_console_on_shake.dart';

lib/src/log_console_on_shake.dart

Lines changed: 0 additions & 72 deletions
This file was deleted.

lib/src/shake_detector.dart renamed to lib/src/shake/default_shake_detector.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,35 @@ import 'dart:async';
22
import 'dart:math';
33

44
import 'package:flutter/material.dart';
5+
import 'package:logger_flutter_plus/src/shake/shake_detector.dart';
56
import 'package:sensors_plus/sensors_plus.dart';
67

7-
class ShakeDetector {
8-
ShakeDetector({
8+
class DefaultShakeDetector implements ShakeDetector {
9+
DefaultShakeDetector({
910
required this.onPhoneShake,
1011
this.shakeThresholdGravity = 1.25,
1112
this.minTimeBetweenShakes = 160,
1213
this.shakeCountResetTime = 1500,
1314
this.minShakeCount = 2,
1415
});
1516

17+
@override
1618
final VoidCallback onPhoneShake;
17-
19+
@override
1820
final double shakeThresholdGravity;
21+
@override
1922
final int minTimeBetweenShakes;
23+
@override
2024
final int shakeCountResetTime;
25+
@override
2126
final int minShakeCount;
2227

2328
int _shakeCount = 0;
2429
int _lastShakeTimestamp = DateTime.now().millisecondsSinceEpoch;
2530
StreamSubscription? _streamSubscription;
2631

2732
/// Starts listening to accerelometer events
33+
@override
2834
void startListening() {
2935
_streamSubscription = accelerometerEvents
3036
.map((event) {
@@ -57,6 +63,7 @@ class ShakeDetector {
5763
}
5864

5965
/// Stops listening to accelerometer events
66+
@override
6067
void stopListening() {
6168
_streamSubscription?.cancel();
6269
_streamSubscription = null;

lib/src/shake/shake_detector.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import 'package:flutter/material.dart';
2+
3+
abstract class ShakeDetector {
4+
abstract final VoidCallback onPhoneShake;
5+
6+
abstract final double shakeThresholdGravity;
7+
abstract final int minTimeBetweenShakes;
8+
abstract final int shakeCountResetTime;
9+
abstract final int minShakeCount;
10+
11+
/// Starts listening to accerelometer events
12+
void startListening();
13+
14+
/// Stops listening to accelerometer events
15+
void stopListening();
16+
}

lib/src/shake_detector_widget.dart

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:logger_flutter_plus/src/shake/shake_detector.dart';
3+
4+
class ShakeDetectorWidget extends StatefulWidget {
5+
const ShakeDetectorWidget({
6+
Key? key,
7+
required this.child,
8+
required this.shakeDetector,
9+
}) : super(key: key);
10+
11+
final Widget child;
12+
final ShakeDetector shakeDetector;
13+
14+
@override
15+
_ShakeDetectorWidgetState createState() => _ShakeDetectorWidgetState();
16+
}
17+
18+
class _ShakeDetectorWidgetState extends State<ShakeDetectorWidget> {
19+
@override
20+
void initState() {
21+
super.initState();
22+
23+
widget.shakeDetector.startListening();
24+
}
25+
26+
@override
27+
Widget build(BuildContext context) {
28+
return widget.child;
29+
}
30+
31+
@override
32+
void dispose() {
33+
widget.shakeDetector.stopListening();
34+
super.dispose();
35+
}
36+
}

0 commit comments

Comments
 (0)