v2.0.2flutter_floating
Flutter 권한 없이 떠다니는 창, 가볍고 유연하며 완전히 기능하는 Flutter 플로팅 윈도우 컴포넌트입니다.
Flutter 권한 없이 플로팅 윈도우, 가볍고 유연하며 기능이 완전한 Flutter 플로팅 윈도우 컴포넌트입니다. Flutter Permissionless Floating Window, a lightweight, flexible, and fully functional Flutter floating window component.
{"sdk":"flutter"}^1.0.3{"sdk":"flutter"}^1.0.0^1.17.10아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
pub version license pub downloads stars issues
轻量且可全局管理的 Flutter 悬浮窗组件,支持拖拽、吸附、位置缓存、多指交互与屏幕旋转适配,适合悬浮工具、快捷入口与悬浮播放器等场景。
快速预览:
在线预览(Web Demo) · 建议先运行 example/ 查看完整示例
If you prefer English, see the translated docs:
FloatingOverlay 或 FloatingManager 即可在页面或全局插入悬浮窗。在 pubspec.yaml 中添加:
dependencies:
flutter_floating: newVersion
然后运行:
flutter pub get
FloatingManager 全局管理多个悬浮窗,或在单页面内以 Stack 插入。late FloatingOverlay floating = FloatingOverlay(
const FloatingIcon(),
slideType: FloatingEdgeType.onRightAndTop,
right: -20,
params: FloatingParams(snapToEdgeSpace: -20),
top: 100,
);
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
floating.open(context);
});
}
//关闭
floating.close()
//销毁
floating.dispose()
将在页面内创建并自动打开一个悬浮窗:
late FloatingOverlay floating = FloatingOverlay(
const FloatingIcon(),
slideType: FloatingEdgeType.onRightAndTop,
right: -20,
params: FloatingParams(snapToEdgeSpace: -20),
top: 100,
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
fit: StackFit.expand,
children: [floating.getFloating()],
),
);
}
@override
void dispose() {
super.dispose();
floating.dispose();
}
floatingManager.createFloating(
"key_1",
FloatingOverlay(
const FloatingIcon(),
slideType: FloatingEdgeType.onRightAndTop,
right: -20,
params: FloatingParams(snapToEdgeSpace: -20),
top: 100,
),
);
//获取
floatingManager.getFloating("key_1");
//关闭
floatingManager.closeFloating("key_1");
//销毁
floatingManager.disposeFloating("key_1");
//....
更多示例请查看仓库 example/。
FloatingOverlay:页面内浮窗封装,创建/打开/关闭/定位单个悬浮窗的入口(适合局部使用)。FloatingManager:全局管理器,用于创建、获取、关闭和销毁全局悬浮窗(通过 key 管理)。FloatingCommonController:通用控制器,提供显示/隐藏、移动、设置位置、吸附与动画控制等 API,适合代码层面动态控制悬浮窗行为。FloatingParams:配置参数集合,控制吸附、缓存、透明度、边距、回弹与可拖拽性等行为。FloatingListener:事件回调容器,便于将多个回调以对象形式注册到悬浮窗上。示例:添加监听器
var listener = FloatingEventListener()
..openListener = () => print('open')
..closeListener = () => print('close')
..downListener = (x, y) => print('down: \$x,\$y')
..moveListener = (x, y) => print('move: \$x,\$y')
..upListener = (x, y) => print('up: \$x,\$y')
..moveEndListener = (x, y) => print('move end: \$x,\$y');
floatingOne.addFloatingListener(listener);
example/:git clone https://github.com/kngLv/flutter_floating.git
cd flutter_floating/example
flutter pub get
flutter run -d <device>
pubspec.yaml 中的环境为准)创建悬浮窗时通过 FloatingParams.isShowLog 控制是否打印分组日志,便于按悬浮窗 key 查看行为。
欢迎 Issues、PR 与示例改进。建议:
main 分支并附加简要说明与 demo(若改动行为请同步更新 example)。作者:LvKang(邮箱:lv345_y@163.com)
许可:MIT(详见仓库 LICENSE)
感谢你使用 flutter_floating,如果它帮到了你,欢迎点个 Star ⭐️!