今天在做一个关于拖动button的小demo,看到里面有getX和getRawX。就写了个测试来看看两者有什么区别。...或是否全屏幕) 如果你的某个Activity中实现OnTouchListener接口,需要重写onTouch(View view,MotionEvent event) 这个方法,getRawX()和getRawY...()获得的是相对屏幕的位置,getX()和getY()获得的永远是view的触摸位置坐标(这两个值不会超过view的长度和宽度)。...event.getX() 与 event.getRawX()获取的值是一样的,event.getY() 与 event.getRawY()获取的值是一样 ?...下面简单来讲讲onTouch和onTouchEvent的区别 onTouch:属于某个组件的OnTouchListener接口,点击组件有效 onTouchEvent:属于Activity,点击全屏幕有效
今天要向大家介绍的就是SliverList和SliverGird。...SliverList和SliverGird详解 从名字就可以看出SliverList和SliverGird分别是List和Grid的一种,他们和List与Grid最大的区别在于,他们可以控制子widget...我们先来看下这两个组件的定义和构造函数: class SliverList extends SliverMultiBoxAdaptorWidget { /// Creates a sliver that...SliverList和SliverGird的使用 有了上面介绍的SliverList和SliverGird的构造函数,接下来我们具体来看下如何在项目中使用SliverList和SliverGird。...总结 在CustomScrollView中使用SliverList和SliverGird,可以实现灵活的呈现效果。
也就是列表所在的可视区域大小; Scrollable :它主要通过对手势的处理来实现滑动效果; Sliver : 准确来说应该是 RenderSliver, 它主要是用于在 Viewport 里面布局和渲染内容...,插入头部的数据就会 (绿色部分),就会把原本的 SliverList 数据往后顶上去,从而产生了 SliverList 的位置发现变化。...这时候就需要使用到 CustomScrollView,CustomScrollView 支持配置 center, 另外对于 CustomScrollView 是直接配置你需要的 slivers 数组。...前面我们说过 center 决定了 scrollOffset = 0 的位置,所以当我们如上面那样布局后,就等于有了从 0 ~ ♾️ 和从 -♾️ ~ 0 的范围,所以当我们 insert 数据到头部时...虽然实现很简单,但是如果不去对 Flutter 的滑动列表机制有所了解,就很容易对着 ListvView 陷入僵局,这篇文章也是为了给大家打开思路,提高对 ViewPort 和 Sliver 的了解。
SliverList 替代 ListView,SliverAppBar 替代 AppBar,所有 Sliver 的滚动状态由 CustomScrollView 统一协调。...CustomScrollView 的 slivers 参数接收一个 Sliver 列表,按顺序处理它们的布局和滚动逻辑。...实现视差滚动效果 视差滚动通过 SliverAppBar 和 SliverList 联动实现,背景和列表以不同速度滚动。...flexibleSpace: Image.network("https://xx.jpg", fit: BoxFit.cover), expandedHeight: 300, ), SliverList...视差滚动实现:SliverAppBar 与 SliverList 联动,通过 flexibleSpace 设置背景图。 精确滚动控制:ScrollController 用于监听位置和触发滚动动画。
聊天列表是一个很扣细节的场景,在之前的 《Flutter 实现完美的双向聊天列表效果,滑动列表的知识点》 里,通过 CustomScrollView 和配置它的 center 从而解决了数据更新时的列表跳动问题...SliverList 顶部空白的问题; image 结合这个问题,这里可以发现关键的点就在于 reverse ,而对比微信和QQ的聊天列表需求,在没有数据时,消息数据应该是从顶部开始,所以这时候就需要我们调整列表实现...image 如下代码所以,这里针对新交互场景做了优化调整: 去除 CustomScrollView 的 reverse ; 对调两个 SliverList 的位置,把加载 old 数据的 SliverList...SliverList ,因为起始点在顶部,如果不用下面绿色的正向 SliverList ,就会导致第一次数据看不到的情况。...事实上在 FixedScrollMetrics 里有 extentBefore 、 extentInside 和 extentAfter 三个参数,它们的关系类似下图所示: image 一般情况下:
这篇文章将介绍一下它们的作用和使用场景。...SliverCrossAxisGroup 交叉轴分组滑片 可以容纳多个 Sliver 组件,在交叉轴方向上分组 这五个组件的使用案例,将在后续加入到开源项目 FlutterUnit 中,欢迎大家对项目的关注和支持...如下所示,左中右三块 SliverList 水平排布,共同滑动。...而 SliverConstrainedCrossAxis 和 SliverCrossAxisExpanded 两个组件就是用于控制滑片在交叉轴方向尺寸的,所以说这三位是同一条船上的。...案例中需要准备三个 SliverList 的滑块,为了简单起见,这里简单封装一个 SliverColorList 用于构建滑块组件,可指定色块颜色、条目高、条目数量等: class SliverColorList
如何将嵌套列表迁移到 Slivers 第1步 首先,将最外面的 ListView 更改为SliverList. // Before @override Widget build(BuildContext...// Before List innerLists = []; 变成: // After ListSliverList> innerLists = []; ---- 第 3 步...的SliverList类是比原始略有不同ListView的类,与主要差异是的外观delegate。...numberOfItemsPerList; j++) { _innerList.add(const ColorRow()); } innerLists.add( SliverList...这节课对你来说怎么样,可以的话,支持一下吧 你快速的滑动的时候会发现,这个时候的列表没有抖动!
前言 经过initMixin再接下来就到了stateMixin,接下来咱们就看看stateMixin中到底有什么; 内容 stateMixin位于src/core/instance/state.ts下...; export function stateMixin(Vue: typeof Component) { // flow somehow has problems with directly...propsDef.set = function () { warn(`$props is readonly.`, this) } } // 将dataDef和propsDef...cn.vuejs.org/v2/api/#vm-props Object.defineProperty(Vue.prototype, '$props', propsDef) // 将set和del
最主要的原因就是可以在 slives 中添加多个组件,如在列表的上面和下面添加更多的内容。...并且 slivers 中,如果存在多个列表的话也是支持动态加载的,而不是会一次性全部渲染完 各式各样的 Slivers 组件 SliverList 在上面的例子中 SliverList 使用的是 SliverChildBuilderDelegate...这个delegate,它可以实现动态加载,当然 SliverList 中也有和 ListView 中一样的非动态加载的delegate,就是SliverChildListDelegate SliverList...SliverFillViewport 它也接受一个 delegate,支持动态的加载,只不过内部的子元素会占满整个屏幕 SliverFillViewport( delegate: SliverChildListDelegate...floating 属性用来控制收起是是否展示,具体意思和 SliverAppbar 中一样。
前面我们学习了文本、图片和按钮这些基本元素,这些基本元素需要进行排列组合,才能构成我们看到的UI视图。...除了默认的垂直方向布局之外,ListView还可以通过设置 scrollDirection 参数支持水平方向布局。...比如,ListView的Sliver实现为SliverList,AppBar的Sliver实现为SliverAppBar。...flexibleSpace 可以让背景图显示在SliverAppBar下方,高度和SliverAppBar一样; 而在创建SliverList时,通过 SliverChildBuilderDelegate...ListView组件,同时支持垂直方向和水平方向滚动,不仅提供了少量一次性创建子视图的默认构造方法,也提供了大量按需创建子视图的ListView.builder机制,并且支持自定义分割线。
child: Icon(Icons.add), ), ); } } 首先新建一个mixin,这里命名为_CounterStateMixin,把原来State中的_counter和_...class _CounterState extends State with _CounterStateMixin 这里我们就把View和Model分开了,View相关的逻辑都在...State中,而Model相关的逻辑则都在StateMixin里。...另外一个优点就是副作用小,我们都知道使用mixin的话在运行时可以认为完全和原来那个State是一致的。...而与Model相关的逻辑则尽量放在StateMixin里,例如网络请求等。 以上就是对使用mixin来实现Flutter中View与Model分离的介绍,大家看完如果有什么想法欢迎评论。
CustomScrollView CustomScrollView是使用Sliver组件创建自定义滚动效果的滚动组件,使用场景: ListView和GridView相互嵌套场景,ListView嵌套GridView...时,需要给GridView指定高度,但我们希望高度随内容而变化(不指定),ListView和GridView作为整体滚动效果。...Sliver系列组件有很多,比如SliverList、SliverGrid、SliverFixedExtentList、SliverPadding、SliverAppBar等。...GridView),然后是列表布局(ListView),滚动的时候做为一个整体,此场景是无法使用GridView+ListView来实现的,而是需要使用CustomScrollView+SliverGrid+SliverList...Text('$index',style: TextStyle(color: Colors.white,fontSize: 20),), ); }).toList(),), SliverList
以 ListView 为例,如上图所示是 ListView 滑动过程的变化,其中: 绿色的 Viewport 就是我们看到的列表窗口大小; 紫色部分就是处理手势的 Scrollable,让黄色部分 SliverList...在 Viewport 里产生滑动; 黄色的部分就是 SliverList , 当我们滑动时其实就是它在 Viewport 里的位置发生了变化; 了解完这个基础理念后,就可以知道一般情况下 Viewport...所以在 Flutter 里: ListView 使用的是 SliverFixedExtentList 或者 SliverList; GridView 使用的是 SliverGrid; PageView...image 以 ListView 为例,如上图所示是一个高为 701 的 ListView ,实际布局渲染之后,对于 SliverList 输出的 SliverGeometry 而言: 设定里每个 item...; 通过 CupertinoSliverRefreshControl + SliverList 实现类似 iOS 原生的下拉刷新列表; 其他可用的内置 Sliver 还有:SliverPadding
先上结论PHP不支持方法重载和只支持方法覆盖 所谓方法重载是指 , 方法名相同 , 参数不相同 , 这时候是表示两个方法 ,传不同的参数调用不同的方法 PHP如果在同一个类里面的两个方法 , 方法名相同会报错...redeclare 重复定义 如果是在子类和父类的相同 , 那么就会覆盖父类的方法 , 不管你参数是不是一样 方法覆盖就是直接覆盖了父类的方法 , 只要方法名相同就可以 ,但是要注意访问修饰符 访问修饰符可以是不一样的
下面让我们的博客也支持使用 Markdown 书写。
如果增强现实是应用程序的辅助功能:ARConfiguration通过测试相应子类的isSupported属性,检查当前设备是否支持您要使用的AR配置。...您的应用仍可在其他设备上使用,因此您必须测试ARFaceTrackingConfiguration.isSupported属性以确定当前设备上的面部跟踪支持。...小提示 在应用程序的UI中提供AR功能之前检查属性,以便不受支持的设备上的用户不会因尝试访问这些功能而失望。...isSupported 处理用户同意和隐私 要让您的应用使用ARKit,用户必须明确授予您的应用访问相机的权限。当您的应用首次运行AR会话时,ARKit会自动询问用户是否有权限。...也可以看看 第一步 class ARSession 一个共享对象,用于管理增强现实体验所需的设备摄像头和运动处理。 class ARConfiguration AR会话配置的抽象基类。
ListView 的基本用法 ListView 是 Flutter 中用于展示一组连续视图元素的控件,支持垂直或水平方向滚动。适用于需要展示大量数据的场景,如通信录、商家列表等。...ListView.separated 构造函数 支持自定义分割线,通过 separatorBuilder 动态设置分割线样式。...Sliver 的概念 将独立的可滚动控件(如 SliverList、SliverAppBar)统一管理,确保滑动效果一致。...示例代码: CustomScrollView( slivers: [ SliverAppBar(title: Text('视差滚动示例')), SliverList(...ListView.separated:支持自定义分割线。 CustomScrollView:统一管理多个可滚动控件,实现复杂交互效果。
项目中有时候需要同时支持XML和JSON格式的参数和返回值,如果是参数还比较容易处理,可以用String接收然后手动转换。...但是如果是返回值,则需要使用Spring框架自动转换,本文介绍如何在Spring框架实现Json和Xml Jar包引用 pom.xml
以 ListView 为例,如上图所示是 ListView 滑动过程的变化,其中: 绿色的 Viewport 就是我们看到的列表窗口大小; 紫色部分就是处理手势的 Scrollable,让黄色部分 SliverList... 在 Viewport 里产生滑动; 黄色的部分就是 SliverList , 当我们滑动时其实就是它在 Viewport 里的位置发生了变化; 了解完这个基础理念后,就可以知道一般情况下 Viewport...所以在 Flutter 里: ListView 使用的是 SliverFixedExtentList 或者 SliverList; GridView 使用的是 SliverGrid; PageView...image.png 以 ListView 为例,如上图所示是一个高为 701 的 ListView ,实际布局渲染之后,对于 SliverList 输出的 SliverGeometry 而言: 设定里每个...; 通过 CupertinoSliverRefreshControl + SliverList 实现类似 iOS 原生的下拉刷新列表; 其他可用的内置 Sliver 还有:SliverPadding