shake_gesture 0.1.2 shake_gesture: ^0.1.2 copied to clipboard
shake_gesture is a Flutter package that provides a widget to detect shake gestures. It allows you to easily add shake detection to your Flutter app, which can be useful for a variety of purposes such [...]
shake_gesture #
This Flutter plugin detects shake gestures on Android and iOS.
Usage #
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('ShakeGesture Example')),
body: Center(
// Here it is 👇
child: ShakeGesture(
onShake: () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Shake!')),
);
},
child: const Center(
child: OutlinedButton(
onPressed: ShakeGestureTestHelperExtension.simulateShake,
child: Text('Simulate Shake'),
),
),
),
// The end.
),
);
}
}
Simulator #
This package works in the iOS simulator.
To simulate a shake event in Android emulator, either play with the Sensor Manager, or add the following piece of code to your Activity:
class MainActivity: FlutterActivity() {
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_MENU) {
this.flutterEngine?.plugins?.get(ShakeGesturePlugin::class.java).let { plugin ->
if (plugin is ShakeGesturePlugin)
plugin.onShake()
}
}
return super.onKeyDown(keyCode, event)
}
}
Then, you can use ctrl+m or cmd+m (mac) to simulate a shake motion.
Test Helper #
In order to simulate a shake gesture in a test, add the following package:
shake_gesture_test_helper
And call the shake
method on your widgetTester
:
testWidgets('it detects shakes', (widgetTester) async {
var shakeDetected = false;
await widgetTester.pumpWidget(
ShakeGesture(
onShake: () {
shakeDetected = true;
},
child: Container(),
),
);
await widgetTester.shake();
expect(shakeDetected, true);
});
Contribute #
Test your contribution by running the unit tests and integration tests.
cd shake_gesture/example
flutter test
flutter test integration_test