搜尋套件、儲存庫與 APP 分類

套件詳情v0.2.0

flutter_windowmanager

一個用於操作 Android WindowManager 布局參數的 Flutter 外掛。

Android
近 30 天下載
3410
喜歡數
368
Pub 分數
160

安裝套件

flutter pub add flutter_windowmanager

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 插件,可實現對 Android 的 WindowManager LayoutParams 的操作,使開發者能夠控制 Android 應用中視窗的位置、大小和行為。該插件提供對系統級視窗屬性的直接存取,適用於建立浮動小工具、覆蓋層或跨活動持續存在的自訂 UI 元素。該插件專為 Android 設計,並透過平台通道與原生 Android SDK 集成。它支援進階視窗管理功能,例如程式化調整視窗類型、可取得焦點性以及佈局參數。

適用情境

  • 建立浮動 UI 覆蓋層
  • 始終置頂小部件
  • 實現自定義窗口位置
  • 開發螢幕錄製或註釋工具
  • 管理透明或半透明視窗

主要特色

  • 對 WindowManager LayoutParams 的直接存取
  • 支援視窗類型自訂
  • 對視窗大小和位置的程式化控制
  • Android 特定功能
  • 與原生 Android SDK 集成

適合對象

  • 僅限 Android 的應用需要視窗疊加
  • 開發浮動 UI 組件的開發者
  • 需要持久化螢幕元素的應用程式
  • 需要系統級視窗管理的工具
  • 高級安卓UI實驗

使用建議

  • 僅限 Android 平台
  • 需要適當的系統權限
  • 由於製造商的限制,可能無法在所有裝置上運作
  • 與較新 Android 版本的潛在相容性問題
  • 需要仔細處理視窗生命週期與權限

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

flutter_windowmanager

Build Status Pub

A Flutter plugin for manipulating Android WindowManager LayoutParams dynamically at application run-time.

Example App Use

Motivation

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:

await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);

for the relevant screen.

This can further be toggled for a specific screen by either using a RouteAware mixin, or through direct toggling in initState() and dispose() methods in the case of stateful widgets.

Flags

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.

iOS Support

As flutter_windowmanager only wraps and exposes an underlying Android-specific interface, there is no iOS support planned or possible. For those interested in cross-platform FLAG_SECURE functionality, this functionality has been re-created in the third-party secure_application package. Cross-platform FLAG_KEEP_SCREEN_ON functionality is provided by the third-party keep_screen_on package.

Features and bugs

Please file feature requests and bugs at the issue tracker.

License

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.

所屬分類

原始碼儲存庫

使用此套件的專案