Skip to content

razfazz/flutter_overlay_window

 
 

Repository files navigation

flutter_overlay_window

Flutter plugin for displaying your flutter app over other apps on the screen

Preview

TrueCaller overlay exemple click-through overlay exemple
truecaller clickable

Installation

Add package to your pubspec:

dependencies:
  flutter_overlay_window: any # or the latest version on Pub

Android

You'll need to add the SYSTEM_ALERT_WINDOW permission and OverlayService to your Android Manifest.

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    <application>
        ...
        <service android:name="flutter.overlay.window.flutter_overlay_window.OverlayService" android:exported="false" />
    </application>

Entry point

Inside main.dart create an entry point for your Overlay widget;

// overlay entry point
@pragma("vm:entry-point")
void overlayMain() {
  runApp(const MaterialApp(
    debugShowCheckedModeBanner: false,
    home: Material(child: Text("My overlay"))
  ));
}

USAGE

 /// check if overlay permission is granted
 final bool status = await FlutterOverlayWindow.isPermissionGranted();

 /// request overlay permission
 /// it will open the overlay settings page and return `true` once the permission granted.
 final bool status = await FlutterOverlayWindow.requestPermission();

 /// Open overLay content
 ///
 /// - Optional arguments:
 /// `height` the overlay height and default is [overlaySizeFill]
 /// `width` the overlay width and default is [overlaySizeFill]
 /// `OverlayAlignment` the alignment postion on screen and default is [OverlayAlignment.center]
 /// `OverlayFlag` the overlay flag and default is [OverlayFlag.defaultFlag]
 /// `overlayTitle` the notification message and default is "overlay activated"
 /// `overlayContent` the notification message
 /// `enableDrag` to enable/disable dragging the overlay over the screen and default is "false"
 await FlutterOverlayWindow.showOverlay();

 /// closes overlay if open
 await FlutterOverlayWindow.closeOverlay();

 /// broadcast data to and from overlay app
 await FlutterOverlayWindow.shareData("Hello from the other side");

 /// streams message shared between overlay and main app
  FlutterOverlayWindow.overlayListener.listen((event) {
      log("Current Event: $event");
    });

 /// use [OverlayFlag.focusPointer] when you want to use fields that show keyboards
 await FlutterOverlayWindow.showOverlay(flag: OverlayFlag.focusPointer);


 /// update the overlay flag while the overlay in action
 await FlutterOverlayWindow.updateFlag(OverlayFlag.defaultFlag);
enum OverlayFlag {
  /// Window flag: this window can never receive touch events.
  /// Usefull if you want to display click-through overlay
  clickThrough,

  /// Window flag: this window won't ever get key input focus
  /// so the user can not send key or other button events to it.
  defaultFlag,

  /// Window flag: allow any pointer events outside of the window to be sent to the windows behind it.
  /// Usefull when you want to use fields that show keyboards.
  focusPointer,
}

Credits

this plugin is optimized version from flutter_overlay_apps

About

Flutter plugin for displaying flutter app over other apps on the screen

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 54.6%
  • Dart 45.4%