首页
学习
活动
专区
圈层
工具
发布

Flutter 史上最牛拖动控件 Draggable

不慌,Flutter 也为我们提供了相关的 Widget。 Draggable Flutter 如果要实现这种效果,那么非 Draggable 不可。 照例我们查看官方文档。...那也就是说,除了 Draggable ,还有一个 DragTarget。 DragTarget 是用来接收我们拖过去的 Widget 的,我们后面再说。 先说Draggable。...: (context, index) { return Draggable( // 返回一个Draggable // 必须要一个Material,不然拖动时Text会有双下划线...其他参数看名字也都能明白: onWillAccept 拖到该控件上时调用 onAccept 放到该控件时调用 onLeave 没有放到该控件时调用 那我们这里只需要一个确认已经放到该控件时的回调,来接收我们传过来的值...key); } 因为如果想要传入数据,那也就必须要有数据可以传,也就是我们构造函数里看到的 data 字段。

3.9K42
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter | 滚动组件,ListView,GridVIew等

    可滚动组件 当组件内容超过当前显示视口(ViewPort)时,如果没有特殊处理,Flutter 就会提示 Overflow 错误,为此,Flutter 提供了多种可滚动组件,用于显示列表和长布局; 可滚动组件都直接或间接的包含一个...@required IndexedWidgetBuilder itemBuilder, int itemCount, ... }) 复制代码 itemBuilder:列表的构建器,类型为 IndexedWidgetBuilder...,返回值为一个 widget。....map((e) => e.asPascalCase) .toList()); }) }); } 复制代码 onRefresh 接收一个返回值为...Future 的函数, 其中 async 表示这个函数是一部分,使用该关键字的函数必须返回一个 Future 对象 await 后面必须是一个 Fluture ,表示等等等异步执行完成,执行完成之后才会继续往下执行

    10.2K20

    《Flutter》-- 6.高级组件

    接收滚动事件的参数类型为ScrollNotification,它提供了一个metrics属性,该属性包含了当前可视窗口和滚动位置等信息。...如果为null,则列表为无限列表。...oldDelegate) { return true;//是否需要执行重绘 } } 示例效果: 创建Flutter自绘组件时,可以做以下两点性能优化: 1)尽可能利用好shouldRepaint()的返回值...如果绘制的内容不需要依赖外部状态,返回false即可;如果绘制过程需要依赖外部状态,可以在shouldRepaint()中判断依赖的状态是否改变,如果已改变,则返回true并执行重绘操作,反之则返回false...不执行重绘; 2)绘制应尽可能多地进行分层 因为复杂的自绘组件都是由很多功能构成的,如果都写在一个方法中,不利于阅读,而且全部重绘带来的性能开销也很大。

    12.6K20

    Flutter | 超实用简单菜单弹出框 PopupMenuButton

    点击 AppBar 右上角的按钮,弹出一个菜单供用户选择。 幸运的是,Flutter 提供给我们了一个 Widget,直接就能实现如上的效果。...大致意思为: 当按下的时候显示一个菜单,选择了一个项目的时候会回调 onSelected,传递的值是所选菜单的值。 可以提供 child or icon ,但是不能同时提供。...= null),assert(offset != null),assert(enabled != null),assert(!(child != null && icon !...= null)), // fails if passed both parameterssuper(key: key); 这里面每一个参数应该都很好理解,就不做过多的解释了, 唯一必传的参数就是 itemBuilder...2.然后在 AppBar 的「actions」里定义了 PopupMenuButton3.设置 icon 为 Icon(Icons.more_vert)4.itemBuilder 需返回一个 List<

    6.8K30

    Flutter 零基础入门(四十二):Flutter 路由与导航进阶 —— 命名路由与参数传递实战

    settings.arguments 获取传递参数 三、返回值获取 1️⃣ 返回上一页并传值 ElevatedButton( onPressed: () { Navigator.pop(context..., '我是返回值'); }, child: Text('返回上一页'), ) 2️⃣ 接收返回值 void _openDetail() async { final result = await...: $result'); } await → 等待页面返回结果 → 接收返回值 四、完整示例:列表跳转 + 参数传递 + 返回值 class HomePage extends StatelessWidget...五、常见坑 ❌ 没配置 routes → pushNamed 找不到路由 ❌ arguments 类型转换错误 → as Map / List / 自定义类型 ❌ 返回值未 await → 无法获取结果...❌ 命名重复 → 路由冲突 建议: 使用统一命名路由表 参数类型明确 异步 await 获取返回值 大型项目可封装路由管理类 六、本篇你真正掌握了什么?

    19810

    Flutter 页面交互 | 路由跳转方式、常用API、发送接收数据、可能发生的问题与知识点拓展

    async关键字; // 需要接收数据,需要加 await关键字; // 需要准备一个数据类型变量,来承载; // 指定函数返回类型为String,Alt+enter 改成 Future返回的数据 // 利用Future变量类型的 then方法,拿到返回的数据 // value位置是一个形参,名字可以随便起,这个形参位置就是返回的数据...路由常见问题及其解决方案 主题风格的一致性 主页面和非主页面的 跳转方式选择 可能不太一样; Scaffold组件的body属性值 为 具体组件名称, 接收不到 路由返回(或传递过来)的数据; 目标页面...处理路由返回的数据 // 接收数据是异步的,需要加 async关键字; // 需要接收数据,需要加 await关键字; // 需要准备一个数据类型变量,来承载; // 指定函数返回类型为...处理路由返回的数据 // 利用Future变量类型的 then方法,拿到返回的数据 // value位置是一个形参,名字可以随便起,这个形参位置就是返回的数据

    4.6K10
    领券