程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在颤振中返回现有的平台视图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在颤振中返回现有的平台视图?

开发过程中遇到如何在颤振中返回现有的平台视图的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在颤振中返回现有的平台视图的解决方法建议,希望对你解决如何在颤振中返回现有的平台视图有所启发或帮助;

我在 Flutter 中使用平台视图来支持我的 Flutter 插件中的 DRM 视频播放,如下所示: 以下平台视图的实施来自:

https://flutter.dev/docs/development/platform-integration/platform-views?tab=android-platform-views-java-tab#hybrid-composition


Widget build(BuildContext context) {
    final String vIEwType = 'irdetodrmvIDeo';
    _controller = Widget.controller;
    final Map<String,dynamic> creationParams = <String,dynamic>{
      "vIDeoUrl": Widget.vIDeoUrl,"drmlicenseUrl": Widget.drmlicenseUrl,"autoplay": Widget.autoplay
    };

    return PlatformVIEwlink(
      vIEwType: vIEwType,surfaceFactory:
          (BuildContext context,PlatformVIEwController controller) {
        return AndroIDVIEwSurface(
          controller: controller,gestureRecognizers: const <Factory<OnesequenceGestureRecognizer>>{},hitTESTBehavior: PlatformVIEwHitTESTBehavior.opaque,);
      },onCreatePlatformVIEw: (PlatformVIEwCreationParams params) {
        return PlatformVIEwsservice.initSurfaceAndroIDVIEw(
          ID: params.ID,vIEwType: vIEwType,layoutDirection: TextDirection.ltr,creationParams: creationParams,creationParamsCodec: StandardmessageCodec(),)
          ..addOnPlatformVIEwCreatedListener(params.onPlatformVIEwCreated)
          ..addOnPlatformVIEwCreatedListener((int id) {
            if (Widget.onVIDeoControls == null) {
              return;
            }

            print("Platform VIEw ID " + ID.toString());
              //Initialize and start the Flutter VIDeo Player
              VIDeoController _controller = VIDeoController()..init(ID);             
              _controller.initialize();

              if (Widget.autoplay) _controller.play();
              Widget.onVIDeoControls(_controller);
            }
          })
          ..create();
      },);
  }

我试图使用以下包中的参来实现全屏实现: https://pub.flutter-io.cn/packages/chewie

此包在 Widget 树的根部使用 inherited Widget,然后使用 Page Route Builder 将 VIDeo Player Widget 推送到 Navigation Route。

我目前面临的问题是,当我们路由到全屏时,它总是会创建一个新的平台视图,其中包含在 AndroID 平台端实现的新方法通道和控制器。

有没有办法使用继承的小部件在小部件树中获取现有的平台视图。类似的方法是使用纹理视图(由 Flutter 视频播放器包使用),因为它们得到在 VIDeoController 中仅初始化一次,并且 VIDeoPlayer 视图基于 Texture ID 返回,因为它使用 Surface 纹理注册表。但是在平台视图的这个实现中,当使用插件中的 DrmVIDeoPlayer 小部件时,它总是初始化视频控制器并创建视频播放器的新实例。

这总是会创建一个新的平台视图,如果它存在于小部件树中以支持全屏功能,我们是否可以返回已经存在的视图。 可以在此处找到问题的更多详细信息: https://github.com/ponnamkarthik/drm_video/issues/6

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的如何在颤振中返回现有的平台视图全部内容,希望文章能够帮你解决如何在颤振中返回现有的平台视图所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。