buildWidget method

  1. @override
Widget buildWidget({
  1. required BuildContext context,
  2. required SuperWebViewController controller,
  3. String? initialUrl,
  4. Map<String, dynamic>? creationParams,
  5. void onPlatformViewCreated(
    1. int id
    )?,
})
override

Implementation

@override
Widget buildWidget({
  required BuildContext context,
  required SuperWebViewController controller,
  String? initialUrl,
  Map<String, dynamic>? creationParams,
  void Function(int id)? onPlatformViewCreated,
}) {
  const String viewType = 'super_webview_view';
  final Map<String, dynamic> params = <String, dynamic>{
    'initialUrl': initialUrl,
    ...?creationParams,
  };

  if (defaultTargetPlatform == TargetPlatform.android) {
    return PlatformViewLink(
      viewType: viewType,
      surfaceFactory: (context, controller) {
        return AndroidViewSurface(
          controller: controller as AndroidViewController,
          gestureRecognizers: const <Factory<OneSequenceGestureRecognizer>>{},
          hitTestBehavior: PlatformViewHitTestBehavior.opaque,
        );
      },
      onCreatePlatformView: (platformParams) {
        final androidController = PlatformViewsService.initSurfaceAndroidView(
          id: platformParams.id,
          viewType: viewType,
          layoutDirection: TextDirection.ltr,
          creationParams: params,
          creationParamsCodec: const StandardMessageCodec(),
          onFocus: () => platformParams.onFocusChanged(true),
        );
        androidController.addOnPlatformViewCreatedListener((id) {
          platformParams.onPlatformViewCreated(id);
          onPlatformViewCreated?.call(id);
        });
        return androidController..create();
      },
    );
  } else if (defaultTargetPlatform == TargetPlatform.iOS) {
    return UiKitView(
      viewType: viewType,
      layoutDirection: TextDirection.ltr,
      creationParams: params,
      creationParamsCodec: const StandardMessageCodec(),
      onPlatformViewCreated: (id) => onPlatformViewCreated?.call(id),
    );
  }
  return Text('$defaultTargetPlatform is not yet supported');
}