# flutter_overlay_window
**Repository Path**: android_locker/flutter_overlay_window
## Basic Information
- **Project Name**: flutter_overlay_window
- **Description**: No description available
- **Primary Language**: Dart
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-10-18
- **Last Updated**: 2023-10-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# flutter_overlay_window
Flutter plugin for displaying your flutter app over other apps on the screen
## Preview
|TrueCaller overlay example|click-through overlay example| Messanger chat-head example |
| :-:| :-: | :-: |
|
|
|
|
## Installation
Add package to your pubspec:
```yaml
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.
```XML
...
```
### Entry point
Inside `main.dart` create an entry point for your Overlay widget;
```dart
// overlay entry point
@pragma("vm:entry-point")
void overlayMain() {
runApp(const MaterialApp(
debugShowCheckedModeBanner: false,
home: Material(child: Text("My overlay"))
));
}
```
### USAGE
```dart
/// 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"
/// `positionGravity` the overlay postion after drag and default is [PositionGravity.none]
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);
/// Update the overlay size in the screen
await FlutterOverlayWindow.resizeOverlay(80, 120);
```
```dart
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,
}
```
```dart
/// Type of dragging behavior for the overlay.
enum PositionGravity {
/// The `PositionGravity.none` will allow the overlay to postioned anywhere on the screen.
none,
/// The `PositionGravity.right` will allow the overlay to stick on the right side of the screen.
right,
/// The `PositionGravity.left` will allow the overlay to stick on the left side of the screen.
left,
/// The `PositionGravity.auto` will allow the overlay to stick either on the left or right side of the screen depending on the overlay position.
auto,
}
```