A Flutter plugin for manipulating Android WindowManager LayoutParams dynamically at application run-time.
While Android natively supports a range of window modes, there was no
good way to set these dynamically within a running Flutter application -
instead requiring that these flags are set within the native
MainActivity of the Flutter application itself.
In our App, we only wished to disable screenshots for specific screens, rather than across the entire application lifecycle. This can now be accomplished by simply calling:
for the relevant screen.
This can further be toggled for a specific screen by either using a
RouteAware mixin, or through direct toggling in
dispose() methods in the case of stateful widgets.
The full range of LayoutParams flags are passed through. The plugin will carry out basic API level checking and throw an error on any unsupported flag specification. Flags are implemented using a bitmask, and may be specified individually or ORed together for setting/clearing multiple flags at once.
The current list of flags is:
FLAG_ALLOW_LOCK_WHILE_SCREEN_ON FLAG_ALT_FOCUSABLE_IM FLAG_DIM_BEHIND FLAG_FORCE_NOT_FULLSCREEN FLAG_FULLSCREEN FLAG_HARDWARE_ACCELERATED FLAG_IGNORE_CHEEK_PRESSES FLAG_KEEP_SCREEN_ON FLAG_LAYOUT_INSET_DECOR FLAG_LAYOUT_IN_SCREEN FLAG_LAYOUT_NO_LIMITS FLAG_NOT_FOCUSABLE FLAG_NOT_TOUCHABLE FLAG_NOT_TOUCH_MODAL FLAG_SCALED FLAG_SECURE FLAG_SHOW_WALLPAPER FLAG_SPLIT_TOUCH FLAG_WATCH_OUTSIDE_TOUCH FLAG_BLUR_BEHIND FLAG_DISMISS_KEYGUARD FLAG_DITHER FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS FLAG_LAYOUT_ATTACHED_IN_DECOR FLAG_LAYOUT_IN_OVERSCAN FLAG_LOCAL_FOCUS_MODE FLAG_SHOW_WHEN_LOCKED FLAG_TOUCHABLE_WHEN_WAKING FLAG_TRANSLUCENT_NAVIGATION FLAG_TRANSLUCENT_STATUS FLAG_TURN_SCREEN_ON
In practice, this plugin was developed primarily for the toggling of
FLAG_SECURE. Other flags have not been tested, and we make no
guarantees that toggling with any of the other flags will interact well
with Flutter - if you find specific problems with any particular flag,
please let us know in the issue tracker.
Features and bugs #
Please file feature requests and bugs at the issue tracker.
Licensed under the terms of the Apache 2.0 license, the full version of which can be found in the LICENSE file included in the distribution.
- Suppress deprecation warnings in build, all uses are safe.
- Initial release.
Demonstrates how to use the flutter_windowmanager plugin.
Getting Started #
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies: flutter_windowmanager: ^0.0.1+1
2. Install it
You can install packages from the command line:
$ flutter pub get
Alternatively, your editor might support
flutter pub get.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
We analyzed this package on Nov 11, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.6.0
- pana: 0.12.21
- Flutter: 1.9.1+hotfix.6
Detected platforms: Flutter
References Flutter, and has no conflicting libraries.
Health issues and suggestions
Document public APIs. (-1 points)
36 out of 36 API elements have no dartdoc comment.Providing good documentation for libraries, classes, functions, and other API elements improves code readability and helps developers find and use your API.
Package is pre-v0.1 release. (-10 points)
While nothing is inherently wrong with versions of
0.0.*, it might mean that the author is still experimenting with the general direction of the API.