Flutter中FloatingActionButton自定义位置的简单实现

转载请注明:IT晴天

FloatingActionButton的位置可以通过FloatingActionButtonLocation来设定,但是FloatingActionButtonLocation只有7个值,不能满足一些特定场合使用。

网上找到的文章基本是源码级的重写,代码量多,也太复杂了!所以决定自己实现一下,发现其实很简单。

因为floatingActionButtonLocation的值接收FloatingActionButtonLocation类型,而它是一个抽象类,所以实现一个自定义类,并重写getOffset方法即可:

class CustomFloatingActionButtonLocation extends FloatingActionButtonLocation {
  FloatingActionButtonLocation location;
  double offsetX;    // X方向的偏移量
  double offsetY;    // Y方向的偏移量
  CustomFloatingActionButtonLocation(this.location, this.offsetX, this.offsetY);

  @override
  Offset getOffset(ScaffoldPrelayoutGeometry scaffoldGeometry) {
    Offset offset = location.getOffset(scaffoldGeometry);
    return Offset(offset.dx + offsetX, offset.dy + offsetY);
  }
}

具体调用如下:

floatingActionButtonLocation: CustomFloatingActionButtonLocation(FloatingActionButtonLocation.endFloat, 0, - 50)

原理很简单,就是选定一个参照点,然后给偏移值就行了,如果不想借用参照点,使用绝对地址,那上面的方法改造起来也很简单。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容