10

Flutter工程笔记 | Flutter好像没那么难搞……

 3 years ago
source link: https://zhuanlan.zhihu.com/p/341147956
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Flutter工程笔记 | Flutter好像没那么难搞……

厦门量潮科技有限公司 执行董事

接着上次的文章(iGuo:Flutter工程笔记 | 拿到了腾讯云VOD的隐藏文档以后……)讨论。

上回说到需要做Flutter视频组件。为了最大限度地可拓展,我做了丧心病狂的四层分层。

第一层,官方video_player组件提供了iOS、Android、Web的支持,需要自定义Mac、Win、Linux等桌面端的支持。在找了很久以后,找到了教程(https://medium.com/flutter/how-to-write-a-flutter-web-plugin-part-2-afdddb69ece6)指示如何操作。简单地说,先实现一个platform_interface用来统一各个平台插件的接口,官方已经提供;然后对各个平台单独实现一个库,继承platform_interface以统一接口;最后在使用库的时候为各个平台配置支持,比如现有平台使用video_player库,桌面端使用自定义的video_player_desktop即可。我单独拆出来一个Flutter Plugin,开发好以后还可以顺便开源出来。

第二层,实现长视频播放器的默认UI库video_on_demand。这里主要模仿腾讯视频、爱奇艺、优酷、芒果TV、B站等长视频平台的通用特性,提供一些默认的UI控件,主要是进度条、手势控件。难点主要是事件通信。因为也有开源的计划,所以需要给每一级的UI控件暴露自定义接口,大概打算采用统一配置类提供配置、为每一级的Widget提供不同的构造器(default和custom模式),通过自定义模式允许定义下一级的Widget及其配置;如果用户需要自定义交互行为,也可以继承某个类然后自定义,再修改配置文件。这样最大限度地实现声明式编程,方便后续产品和设计根据对产品交互的研究进行修改。理想效果是通过简单的自定义即可实现以上各个长视频平台的UI和UX特性。

第三层,实现腾讯云云点播的专用视频播放器qcloud_vod_player。核心特性是接入云点播后端提供的私有加密方案。此外,在UI层面也会支持云点播后台提供的特性,比如同一个视频分辨率的切换,相比于默认播放器增加一些组件。

第四层,实现量潮课堂APP内自定义的播放器。核心特性是增加对用户交互的记录和缓存,用以优化课程的录制工作。

Dart官方提供了非常详细的代码风格、文档风格、用例风格、API设计风格的指南,严格遵循这套指南(高效 Dart 语言指南)即可实现非常标准的Dart和Flutter项目。、

整个计划如果实现出来,预期会给Flutter开源社区贡献基本完整的跨平台长视频播放器解决方案。

如果这个项目或者以后的其他开源项目可以流行,那么也许下一步我会建一个自己的开源平台,用来筹集捐赠和赞助来支持项目开发需要的人力物力。查资料发现国外的运营方式主要是开源基金会或者大公司直接提供资金,直接围绕开源项目构建商业模式的似乎没有成型的规范方案。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK