flutter-可拖动悬浮按钮

Flutter 底部浮动按钮(模仿咸鱼APP底部) 愿你有一天,真爱自己,善待自己。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!愿你有一天,真爱自己,善待自己。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取! 阅读详情

组件

import 'package:flutter/material.dart';

class FloatButton extends StatefulWidget {
  FloatButton({Key key}) : super(key: key);

  @override
  _FloatButtonState createState() => _FloatButtonState();
}

class _FloatButtonState extends State<FloatButton> {
  Offset offsetA = Offset(20, kToolbarHeight + 100); //按钮的初始位置

  @override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    final width = size.width;
    final height = size.height;

    return Scaffold(
      body: Stack(children: <Widget>[
        Positioned(
            left: offsetA.dx,
            top: offsetA.dy,
            child: Draggable(
                //创建可以被拖动的Widget
                child: FloatingActionButton(
                  tooltip: 'Increment',
                  child: Icon(Icons.add),
                  onPressed: () {},
                ),
                //拖动过程中的Widget
                feedback: FloatingActionButton(
                  tooltip: 'Increment',
                  child: Icon(Icons.add),
                  onPressed: () {},
                ),
                //拖动过程中,在原来位置停留的Widget,设定这个可以保留原本位置的残影,如果不需要可以直接设置为Container()
                childWhenDragging: Container(),

                // FloatingActionButton(
                //   tooltip: 'Increment',
                //   child: Icon(Icons.add), onPressed: () {},
                // ),
                //拖动结束后的Widget
                onDraggableCanceled: (Velocity velocity, Offset offset) {
                  // 计算组件可移动范围  更新位置信息
                  setState(() {
                    var x = offset.dx;
                    var y = offset.dy;
                    if (offset.dx < 0) {
                      x = 20;
                    }

                    if (offset.dx > 375) {
                      x = 335;
                    }

                    if (offset.dy < kBottomNavigationBarHeight) {
                      y = kBottomNavigationBarHeight;
                    }

                    if (offset.dy > height - 100) {
                      y = height - 100;
                    }

                    offsetA = Offset(x, y);
                  });
                }))
      ]),
    );
  }
}

main

import 'package:flutter/material.dart';
import 'FloatBtn.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FloatBtn(),
    );
  }
}
flutter 使用Overlay + GestureDetector 制作一个全局可拖拽悬浮按钮 1 阅读详情

相关推荐

Flutter全局悬浮按钮(1)

对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。!文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!一定不能“止步不前”,不能荒废掉。[外链图片转存中…(img-stYNB1RS-1712265101904)]

2301_82242499的博客 1236

Flutter NestedScrollView 、SliverAppBar全解析,悬浮菜单的应用

上述便是通过NestedScrollView 、SliverAppBar实现的效果,通过两个控件我们便可以实现上述的效果。在我们开发过程中经常会使用到悬浮菜单的使用,当我们滑动到指定位置后,菜单会自动悬浮。以上便是菜单悬浮的效果实现,注释写的很详细,直接粘贴复制即可实现。

WangQingLei0307的博客 2115

Flutter悬浮窗组件flutter_floating开发指南

悬浮窗是移动应用开发中常见的交互模式,它通过浮动在应用界面上方的控件提供快速功能访问。在Flutter生态中,flutter_floating组件采用纯Dart实现,基于Overlay系统构建,无需申请系统权限即可实现跨平台一致的悬浮窗效果。该组件通过FloatingManager实现全局管理,支持拖拽吸附、位置记忆和多点触控等特性,特别适合需要保持悬浮状态的功能模块(如音乐播放器或快捷菜单)。相比原生实现方案,这种纯Flutter的解决方案避免了平台差异和权限问题,同时通过优化Widget树结构和事件处理

weixin_29224589的博客 341

flutter 滚动隐藏悬浮按钮

flutter 滚动隐藏悬浮按钮

NotesChapter 2216

Flutter基础控件:Scaffold

@TOCScaffold Scaffold属性 appBar 导航栏 appBar: new AppBar( title: new Text('welcome to flutter'), leading: new Icon(Icons.home), actions: <Widget>[ new IconButton( icon: new Icon(Icons.add_alarm

青蛙不吃草 881

Flutter 增强版的页面悬浮按钮(FloatingActionButton)

安利一个可以增强Flutter 自带的 FloatingActionButton 的组件,点击后可以展开更多操作,简单易用。

Flutter 跨平台技术研究 2148

使用Flutter模仿SOUL可任意拖动的悬浮按钮

在Flutter中,我们可以两种方式实现小部件对拖动效果 GestureDetector() Draggable() GestureDetector 在开发过程中经常使用到GestureDetector的onTap的点击手势,在编辑器中点击GestureDetector进入它的定义可以看到很多手势,但在实现我们想要的拖动效果时,只需要用到以下两个事件: GestureDetector( ...

Coding24h! 6881

Flutter任意拖动的悬浮按钮

Flutter任意拖动的悬浮按钮,可以更改参数设定边界范围, 内包含多个Demo 仓库地址 https://github.com/ihongka/FlutterDIY

flutter 拖拽布局_使用Flutter模仿SOUL可任意拖动的悬浮按钮

在Flutter中,我们可以两种方式实现小部件对拖动效果GestureDetector()Draggable()GestureDetector在开发过程中经常使用到GestureDetector的onTap的点击手势,在编辑器中点击GestureDetector进入它的定义可以看到很多手势,但在实现我们想要的拖动效果时,只需要用到以下两个事件:GestureDetector(//更新child的位...

weixin_39980929的博客 1222

Linux yum源配置以及yum命令讲解

前面为大家介绍了RPM二进制包安装软件,RPM包安装的最大的缺点也提到过,就是依赖性太强,一旦遇到依赖问题,则需要我们手动解决包之间具有依赖性的问题,今天为大家介绍一种可自动解决包之间依赖关系的安装方式:yum。 yum 全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上我们通常可以通过各种软件管家实现软件的一键安装、升级和卸载,yum就是Linux 系统中的一键安装工具。yum 解决依赖关系的基本逻辑是:yu

九派Linux的博客 2283

【项目实战】Qt6 录制屏幕、录制声音生成MP4、AVI、MA3等(完整源码,可直接编译使用)

本文将详细介绍如何利用Qt6多媒体模块中的QMediaCaptureSession、QMediaRecorder、QScreenCapture、QAudioInput、QMediaFormat等功能,实现对屏幕和声音的录制,并生成常见的媒体格式文件,如MP4、AVI、MA3等。我们将探讨如何利用这些功能来实现灵活的视频和音频参数设置,以满足不同需求下的录制和生成要求。我们将重点讨论如何配置视频和音频参数,包括分辨率、帧率、编解码器选择、音频采样率、声道设置等。

yegu001的博客 4940

flutter可吸边且隐藏一半的拖拽悬浮按钮

Flutter可吸边且隐藏一半的拖拽悬浮按钮

androidhyf的博客 233

ISP模块之色彩增强算法--HSV空间Saturation通道调整

色彩增强不同于彩色图像增强,图像增强的一般处理方式为直方图均衡化等,目的是为了增强图像局部以及整体对比度。而色彩增强的目的是为了使的原有的不饱和的色彩信息变得饱和、丰富起来。对应于Photoshop里面的“色相/饱和度”调节选项里面对饱和度的操作。色彩增强的过程,并不改变原有彩色图像的颜色以及亮度信息。     在我的色彩增强算法模块里面,始终只针对色彩饱和度(Saturation)信息做研究,

松间明月 1万+

Flutter拖拽回弹控件实现与优化指南

拖拽回弹是移动应用开发中常见的交互模式,通过物理动画模拟实现控件越界时的弹性效果。其核心原理是基于手势识别和物理模型计算,在Flutter中可通过GestureDetector和自定义动画实现。这种技术能显著提升用户体验,广泛应用于悬浮按钮、可拖动面板等场景。本文以Flutter框架为例,详细解析如何利用Widget系统和渲染管线实现跨平台一致的拖拽回弹效果,包含基础实现、高级功能优化以及性能调优方案。特别针对移动端开发中的热词"手势冲突"和"性能优化"提供了实用解决方案。

weixin_32175665的博客 405

电气比例阀采用外置传感器和PID控制器实现化学机械抛光(CMP)的超高精度压力控制

摘要:为大幅度提高现有CMP工艺设备中压力控制的稳定性,在现有电气比例阀这种单回路PID压力调节技术的基础上,本文提出了升级改造方案,即采用串级控制法(双回路PID控制,也称级联控制),通过在现有电气比例阀回路中增加更高精度的压力传感器和PID控制器,可以将研磨抛光压力的稳定性提高一个数量级,从1~2%的稳定性提升到0.1~0.2%。

Shanghai_Eyoung的博客 1292

从ViT到Swin Transformer:一文搞懂Transformer在CV中的进化史(附实战代码)

本文系统梳理了Transformer在计算机视觉领域的演进历程,从开创性的Vision Transformer(ViT)引入全局注意力机制,到DETR实现端到端目标检测,再到里程碑式的Swin Transformer通过滑动窗口和层次化设计高效桥接CNN与ViT。文章深入剖析了各模型的核心思想、技术突破与实战应用,并提供了可运行的代码示例,帮助读者从理论到实践全面掌握这一关键技术脉络。

cola5的博客 713

Flutter 实现全局悬浮按钮学习

Flutter 代码如何实现了一个全局悬浮按钮,当点击按钮时,会显示一个可以拖动并且通过长按可以移除的悬浮控件。

且听真言 2184

LabVIEW内存泄漏诊断与优化:从报错到高效运行

本文深入探讨LabVIEW内存泄漏的诊断与优化方法,从理解内存泄漏本质到使用专业工具链进行问题定位,再到高频场景的解决方案和高级优化策略。通过实战案例展示如何解决工业数据采集系统中的内存不足问题,帮助开发者提升LabVIEW应用的稳定性和效率。

moon9的博客 198

Flutter全局悬浮按钮

2)拖拽功能可以使用GestureDetector手势按钮或者Draggable实现(PS:我做了一版Draggable实现的,但是发现它会有原本的widget浮在原地,显然不是我要的效果)就是我封装的一个悬浮按钮组件,把它包裹在MaterialApp外面,就可以实现悬浮在所有的组件之上的一个按钮啦(当然也可以不是按钮,具体样式可以自己定义)。// 显示一个底部弹窗,这里是一个测试列表。// 悬浮按钮,可以拖拽(可自定义样式)//静止状态下的offset。//本次移动的offset。// 悬浮按钮的样式。

2401_89694064的博客 943

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7018

网红商品数据抓取:基于Python的高效爬虫实战

本篇博客介绍了从爬取到存储、分析和可视化网红商品数据的完整流程。通过Python的强大生态,我们能够轻松完成复杂的数据抓取任务。在实际应用中,还可以将此爬虫与机器学习模型结合,进一步挖掘数据价值。

2201_76125261的博客 1476

推荐开源项目:sliver_fab - 让你的Flutter应用更具创新力的悬浮按钮解决方案

推荐开源项目:sliver_fab - 让你的Flutter应用更具创新力的悬浮按钮解决方案 项目介绍 在寻找一种能够将浮动操作按钮(FloatingActionButton)优雅地安置于FlexibleSpacebar边缘的解决方案吗?那么,你一定不能错过这个名为sliver_fab的Flutter开源项目。它是一个包装器小部件,可以让你在滑动列表的顶部区域添加一个悬浮元素,从而提升用户体验,实...

gitblog_00089的博客 446

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Flutter从入门到入土【总】

Flutter是谷歌基于Dart语言开发的一款**开源、免费且跨平台**的App开发框架,所以建议先学习Dart语言的**基本语法**,很像JavaScript和Java,学起来很快。*这篇文章打算直接总结如何使用Flutter框架,所以比较长,但是讲解的东西比较简短*

Turing158的博客 3091

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Flutter悬浮窗插件:flutter_floatwing

Flutter悬浮窗插件:flutter_floatwing 在移动应用开发中,悬浮窗功能常常被用于实现一些特殊的需求,如辅助触控、悬浮菜单等。然而,实现这一功能通常需要深入了解Android平台的底层API,这对于Flutter开发者来说可能是一个挑战。为了简化这一过程,flutter_floatwing插件应运而生。本文将详细介绍这一插件,帮助开发者快速上手并充分利用其功能。 项目介绍 flu...

gitblog_00885的博客 931

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Flutter底部导航路由实现

引言 学习Flutter的基础控件的使用。 推荐学习的书籍:《Flutter实战-第二版》 Flutter官方教程 咸鱼技术团队: 1.底部导航实现 要实现这样的效果,我们需要用到以下控件: Scaffold PageView BottomNavigationBar BottomNavigationBarItem PageController 2. Widget属性说明 1.Scaffold 控件 一个完整的路由页可能会包含导航栏、抽屉菜单(Drawer) 以及底部.

lentolove的博客 1479
上一篇: Flutter定时器
下一篇: flutter 滚动隐藏悬浮按钮
叔怀
博客等级 码龄10年 127粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值