shake 3.0.0 copy "shake: ^3.0.0" to clipboard
shake: ^3.0.0 copied to clipboard

A flutter package to detect phone shakes. Adjustable G-force and reset periods.

shake #

A Flutter package to detect phone shakes with directional information.

pub package

Features #

  • Shake detection with directional information (X, Y, Z axes)
  • Force measurement
  • Noise filtering option
  • Configurable shake count and timing parameters

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  shake: ^3.0.0
copied to clipboard

Usage #

Basic Usage #

ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: (ShakeEvent event) {
    // Access detailed shake information
    print('Shake direction: ${event.direction}');
    print('Shake force: ${event.force}');
    print('Shake timestamp: ${event.timestamp}');
  }
);
copied to clipboard

OR

ShakeDetector detector = ShakeDetector.waitForStart(
  onPhoneShake: (ShakeEvent event) {
    // Handle the shake event
  }
);
    
detector.startListening();
copied to clipboard

Breaking Changes in v3.0.0 #

Version 3.0.0 introduced a breaking change where onPhoneShake now receives a ShakeEvent parameter with information about direction, force, and timestamp.

If you're upgrading from v2.x, you need to update your callback to accept the ShakeEvent parameter:

// Before (v2.x)
ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: () {
    print('Shake detected!');
  }
);

// After (v3.x)
ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: (ShakeEvent event) {
    print('Shake detected!');
    // Now you can also access event.direction, event.force, etc.
  }
);
copied to clipboard

Noise Filtering #

ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: (ShakeEvent event) {
    // Handle shake
  },
  useFilter: true, // Enable noise filtering for more reliable detection
);
copied to clipboard

Custom Configuration #

ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: (ShakeEvent event) {
    // Handle shake
  },
  // Configure sensitivity - lower value makes it more sensitive
  shakeThresholdGravity: 2.0,
  // Minimum time between shake detections (ms)
  shakeSlopTimeMS: 300, 
  // Reset shake count after this time (ms)
  shakeCountResetTime: 2000,
  // Number of shakes required before triggering
  minimumShakeCount: 2,
);
copied to clipboard

Directional Shake Information #

The ShakeEvent provides the direction of the shake through the direction property:

ShakeDetector detector = ShakeDetector.autoStart(
  onPhoneShake: (ShakeEvent event) {
    switch (event.direction) {
      case ShakeDirection.x:
        print('Shaken horizontally (left/right)');
        break;
      case ShakeDirection.y:
        print('Shaken vertically (up/down)');
        break;
      case ShakeDirection.z:
        print('Shaken forward/backward');
        break;
      case ShakeDirection.undefined:
        print('Complex shake pattern');
        break;
    }
  }
);
copied to clipboard

Stopping Detection #

To stop listening:

detector.stopListening();
copied to clipboard

Configuration Parameters #

Parameter Description Default
shakeThresholdGravity Acceleration threshold for shake detection (in g) 2.7
shakeSlopTimeMS Minimum time between shake detections (in ms) 500
shakeCountResetTime Time before shake count resets (in ms) 3000
minimumShakeCount Number of shakes required before shake is triggered 1
useFilter Whether to apply noise filtering false

License #

This project is licensed under the MIT License - see your project's license file for details.

204
likes
150
points
28.2k
downloads

Publisher

verified publisherjoshi.dev

Weekly Downloads

2024.10.02 - 2025.04.16

A flutter package to detect phone shakes. Adjustable G-force and reset periods.

Repository

Documentation

API reference

License

BSD-2-Clause (license)

Dependencies

flutter, sensors_plus

More

Packages that depend on shake