addCallback method

Future<void> addCallback(
  1. android_view_SurfaceHolder_Callback callback
)

Implementation

Future<void> addCallback(
  android_view_SurfaceHolder_Callback callback,
) async {
  // invoke native method
  await kMethodChannel.invokeMethod(
    'android.view.SurfaceHolder::addCallback',
    {'__this__': this, 'callback': callback},
  );

  // handle native call
  MethodChannel(
    'android.view.SurfaceHolder::addCallback::Callback',
    kMethodCodec,
  ).setMethodCallHandler((methodCall) async {
    try {
      final args = methodCall.arguments as Map?;
      switch (methodCall.method) {
        case 'Callback::android.view.SurfaceHolder.Callback::surfaceCreated':
          callback.surfaceCreated(args!['var1']);
          break;
        case 'Callback::android.view.SurfaceHolder.Callback::surfaceChanged':
          callback.surfaceChanged(
            args!['var1'],
            args['var2'],
            args['var3'],
            args['var4'],
          );
          break;
        case 'Callback::android.view.SurfaceHolder.Callback::surfaceDestroyed':
          callback.surfaceDestroyed(args!['var1']);
          break;
        default:
          throw MissingPluginException('方法${methodCall.method}未实现');
      }
    } catch (e) {
      debugPrint(e.toString());
      rethrow;
    }
  });
}