30 private static final String TAG =
"BackGestureChannel";
32 @NonNull
public final MethodChannel
channel;
42 new MethodChannel(dartExecutor,
"flutter/backgesture", StandardMethodCodec.INSTANCE);
43 channel.setMethodCallHandler(defaultHandler);
48 private final MethodChannel.MethodCallHandler defaultHandler =
49 new MethodChannel.MethodCallHandler() {
51 public void onMethodCall(@NonNull
MethodCall call, @NonNull MethodChannel.Result
result) {
63 @TargetApi(API_LEVELS.API_34)
64 @RequiresApi(API_LEVELS.API_34)
66 Log.
v(
TAG,
"Sending message to start back gesture");
67 channel.invokeMethod(
"startBackGesture", backEventToJsonMap(backEvent));
77 @TargetApi(API_LEVELS.API_34)
78 @RequiresApi(API_LEVELS.API_34)
80 Log.
v(
TAG,
"Sending message to update back gesture progress");
81 channel.invokeMethod(
"updateBackGestureProgress", backEventToJsonMap(backEvent));
90 @TargetApi(API_LEVELS.API_34)
91 @RequiresApi(API_LEVELS.API_34)
93 Log.
v(
TAG,
"Sending message to commit back gesture");
94 channel.invokeMethod(
"commitBackGesture",
null);
102 @TargetApi(API_LEVELS.API_34)
103 @RequiresApi(API_LEVELS.API_34)
105 Log.
v(
TAG,
"Sending message to cancel back gesture");
106 channel.invokeMethod(
"cancelBackGesture",
null);
115 channel.setMethodCallHandler(handler);
118 @TargetApi(API_LEVELS.API_34)
119 @RequiresApi(API_LEVELS.API_34)
120 private Map<String, Object> backEventToJsonMap(@NonNull BackEvent backEvent) {
121 Map<String, Object>
message =
new HashMap<>(3);
122 final float x = backEvent.getTouchX();
123 final float y = backEvent.getTouchY();
124 final Object touchOffset = (Float.isNaN(
x) || Float.isNaN(
y)) ?
null : Arrays.asList(
x,
y);
125 message.put(
"touchOffset", touchOffset);
126 message.put(
"progress", backEvent.getProgress());
127 message.put(
"swipeEdge", backEvent.getSwipeEdge());