ChildViewConnection constructor

*<Null safety>*

ChildViewConnection(dynamic viewHolderToken, {dynamic viewRef, ChildViewConnectionCallback? onAvailable, ChildViewConnectionCallback? onUnavailable, ChildViewConnectionStateCallback? onStateChanged, bool usePlatformView: false})

Implementation

ChildViewConnection(
  this.viewHolderToken, {
  this.viewRef,
  this.onAvailable,
  this.onUnavailable,
  this.onStateChanged,
  this.usePlatformView = false,
})  : assert(viewHolderToken?.value != null && viewHolderToken.value.isValid),
      assert(
          viewRef?.reference == null || viewRef!.reference.handle!.isValid) {
  if (!usePlatformView) {
    _sceneHost = SceneHost(
        viewHolderToken.value.passHandle(),
        (onAvailable == null)
            ? null
            : () {
                onAvailable!(this);
              },
        (onUnavailable == null)
            ? null
            : () {
                onUnavailable!(this);
              },
        (onStateChanged == null)
            ? null
            : (bool state) {
                onStateChanged!(this, state);
              });
  } else {
    try {
      _platformViewChannel.setMethodCallHandler((call) async {
        switch (call.method) {
          case 'View.viewConnected':
            onAvailable?.call(this);
            break;
          case 'View.viewDisconnected':
            onUnavailable?.call(this);
            break;
          case 'View.viewStateChanged':
            onStateChanged?.call(this, call.arguments.state);
            break;
          default:
            print('Unknown method call from platform view channel: $call');
        }
      });
    } on Exception catch (e) {
      print('Failed to set method call handler: $e');
    }
  }
}