awesome_shake_widget 1.1.0 copy "awesome_shake_widget: ^1.1.0" to clipboard
awesome_shake_widget: ^1.1.0 copied to clipboard

A Flutter widget that provides shake animation and optional vibration effects, great for invalid forms, attention prompts, and user interaction feedback.

๐Ÿš€ awesome_shake_widget #

A customizable Flutter widget that adds shake animations with haptic and vibration feedback. Perfect for invalid forms, error indicators, or drawing attention to UI components.

Pub Version Platform License


โœจ Features #

  • Shake any widget on demand
  • Built-in presets: light, medium, heavy
  • Optional vibration (custom or haptic)
  • Fully customizable offset, pattern & intensities
  • Easy to trigger using a GlobalKey

๐Ÿ“ฆ Installation #

dependencies:
  awesome_shake_widget: ^1.0.1

Run:

flutter pub get

๐Ÿงช Usage #

1๏ธโƒฃ Standard (Shake + Vibration) #

By using the built-in presets โ€” light, medium, heavy and custom โ€” you can quickly apply different vibration intensities and patterns, perfectly paired with UI shake animations for a dynamic and responsive user experience.

final shakeKey = GlobalKey<ShakeWidgetState>();

ShakeWidget(
  key: shakeKey,
  preset: ShakePreset.medium,
  child: Text("Tap Me"),
);

// Somewhere else, e.g., on button press:
shakeKey.currentState?.shake();

2๏ธโƒฃ Shake Only (No Vibration) #

If you only want the visual shake effect without vibration, you can set vibrationType to VibrationType.none using the ShakeConfig. To customize the intensity of the shake, adjust the offset value โ€” higher values will produce a stronger visual effect.

ShakeWidget(
  key: shakeKey,
  customConfig: ShakeConfig(
    offset: 20,
    vibrationType: VibrationType.none,
  ),
  child: Icon(Icons.info),
);

3๏ธโƒฃ Advanced Configuration: Full Control Over Visual and Vibration Effects #

You can also create custom vibration patterns by setting vibrationType to VibrationType.custom, and providing your own pattern and intensities. This gives you full control over the vibration behavior.

ShakeWidget(
key: shakeKey,
customConfig: ShakeConfig(
offset: 32,
pattern: [0, 50, 100, 50],
intensities: [255, 0, 255, 0],
vibrationType: VibrationType.custom,
),
child: Text("Custom Shake!"),
);

Trigger it via:

shakeKey.currentState?.shake();

๐ŸŽฅ Demo #

This demo shows how you can apply shake animations to:

  • โœ… Buttons
  • ๐Ÿ’ฌ Dialogs
  • ๐Ÿ–ผ๏ธ Images
  • โœ๏ธ Text fields
  • ๐Ÿ“ฆ Any widget

๐Ÿงฉ API Reference #

Enum: ShakePreset #

Value Offset Vibration
light 8 Haptic
medium 16 Haptic
heavy 24 Patterned Vibe
custom User-defined Custom

Enum: VibrationType #

  • none โ€“ no vibration
  • haptic โ€“ system haptic feedback
  • custom โ€“ vibration with pattern/intensity (Android only)

ShakeConfig #

ShakeConfig({
  required double offset,
  List<int>? pattern,
  List<int>? intensities,
  VibrationType vibrationType = VibrationType.haptic,
});

๐Ÿ’ก Example App #

Clone and run the example:

cd example
flutter run

Example main.dart:

import 'package:flutter/material.dart';
import 'package:awesome_shake_widget/shake_widget.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ShakeDemo(),
    );
  }
}

class ShakeDemo extends StatelessWidget {
  final shakeKey = GlobalKey<ShakeWidgetState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Shake Demo')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ShakeWidget(
              key: shakeKey,
              preset: ShakePreset.heavy,
              child: const Icon(Icons.warning, size: 64),
            ),
            const SizedBox(height: 32),
            ElevatedButton(
              onPressed: () => shakeKey.currentState?.shake(),
              child: const Text("Shake it!"),
            ),
          ],
        ),
      ),
    );
  }
}

๐Ÿ“„ License #

MIT ยฉ Juanma Del Boca

7
likes
160
points
39
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter widget that provides shake animation and optional vibration effects, great for invalid forms, attention prompts, and user interaction feedback.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, vibration

More

Packages that depend on awesome_shake_widget