Native 与 Kraken 进行手势传递

Native 与 Kraken 进行手势传递

当 Kraken 与 Native 结合使用时,往往会遇到手势冲突的问题,比如说同一个横滑手势在 Kraken 内部消费产生了一个滚动容器的滚动动作,同样在 Native 也会产生一个横滑动作,使得整个 Native 容器被横滑关闭。

因此,Kraken 提供了一个 GestureClient 的抽象类,Kraken 用户可以通过继承该抽象类实现相应的方法,以此来捕获 Kraken 内部不需要消费的手势,来传递给 Native 使用,触发相应的手势事件。

abstract class GestureClient {  void dragUpdateCallback(DragUpdateDetails details);
  void dragStartCallback(DragStartDetails details);
  void dragEndCallback(DragEndDetails details);}

dragUpdateCallback,dragStartCallback,dragEndCallback 三个函数分别会在手势开始、滑动中以及结束三个阶段分别触发。

举个例子:

class NativeGestureClient implements GestureClient {  @override  void dragUpdateCallback(DragUpdateDetails details) {    print('dragUpdateCallback=${details}');  }
  @override  void dragStartCallback(DragStartDetails details) {    print('dragStartCallback=${details}');  }
  @override  void dragEndCallback(DragEndDetails details) {    print('dragEndCallback=${details}');  }}

在 Kraken 的 Widget 初始化时传入。

Kraken kraken = Kraken(  gestureClient: NativeGestureClient(),);

详细的 API 调用见 开发文档。