转载请注明: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)
原理很简单,就是选定一个参照点,然后给偏移值就行了,如果不想借用参照点,使用绝对地址,那上面的方法改造起来也很简单。