anchor.diff:      });
     }
   
  +  /// Sends an Android [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent)
  +  /// to the view.
  +  ///
  +  /// The Android MotionEvent object is created with [MotionEvent.obtain](https://developer.android.com/reference/android/view/MotionEvent.html#obtain(long,%20long,%20int,%20float,%20float,%20float,%20float,%20int,%20float,%20float,%20int,%20int)).
  +  /// See documentation of [MotionEvent.obtain](https://developer.android.com/reference/android/view/MotionEvent.html#obtain(long,%20long,%20int,%20float,%20float,%20float,%20float,%20int,%20float,%20float,%20int,%20int))
  +  /// for description of the parameters.
  +  Future<void> sendMotionEvent(AndroidMotionEvent event) async {
  +    await SystemChannels.platform_views.invokeMethod(
  +        'touch',
  +        event._asList(id),
  +    );
  +  }
  +
  +  /// Creates a masked Android MotionEvent action value for an indexed pointer.
  +  static int pointerAction(int pointerId, int action) {
  +    return ((pointerId << 8) & 0xff00) | (action & 0xff);
  +  }
  +
     Future<void> _create(Size size) async {
       _textureId = await SystemChannels.platform_views.invokeMethod('create', <String, dynamic> {
  -      'id':  id,
  +      'id': id,
         'viewType': _viewType,
         'width': size.width,
         'height': size.height,
  
positive.code:   }
  }
  
  enum _AndroidViewState {
    waitingForSize,
    creating,
  
negative.code:       _onPlatformViewCreated = onPlatformViewCreated,
        _state = _AndroidViewState.waitingForSize;
  
    /// Action code for when a primary pointer touched the screen.
    ///
    /// Android's [MotionEvent.ACTION_DOWN](https://developer.android.com/reference/android/view/MotionEvent#ACTION_DOWN)
    static const int kActionDown =  0;
  
    /// Action code for when a primary pointer stopped touching the screen.
    ///
    /// Android's [MotionEvent.ACTION_UP](https://developer.android.com/reference/android/view/MotionEvent#ACTION_UP)
    static const int kActionUp =  1;
  
    /// Action code for when the event only includes information about pointer movement.
    ///
    /// Android's [MotionEvent.ACTION_MOVE](https://developer.android.com/reference/android/view/MotionEvent#ACTION_MOVE)
    static const int kActionMove = 2;
  
    /// Action code for when a motion event has been cancelled.
    ///
    /// Android's [MotionEvent.ACTION_CANCEL](https://developer.android.com/reference/android/view/MotionEvent#ACTION_CANCEL)
    static const int kActionCancel = 3;
  
    /// Action code for when a secondary pointer touched the screen.
    ///
    /// Android's [MotionEvent.ACTION_POINTER_DOWN](https://developer.android.com/reference/android/view/MotionEvent#ACTION_POINTER_DOWN)
    static const int kActionPointerDown =  5;
  
    /// Action code for when a secondary pointer stopped touching the screen.
    ///
    /// Android's [MotionEvent.ACTION_POINTER_UP](https://developer.android.com/reference/android/view/MotionEvent#ACTION_POINTER_UP)
    static const int kActionPointerUp =  6;
  
    /// The unique identifier of the Android view controlled by this controller.
    final int id;
  
  