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 ⭐️!