美文网首页
flutter plugin开发

flutter plugin开发

作者: flutter养成中 | 来源:发表于2021-05-06 17:25 被阅读0次

    作者在研究开发plugin支持各个平台需要处理的事情。

    1、plugin 官方文档:

    https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms

    flutter create --org com.example --template=plugin --platforms=macos,ios,windows,web hello2
    

    使用命令行后,在Mac下不能创建windows相关文件,应该是不支持,要去windows下试试。

    2、官方plugin地址

    https://github.com/flutter/plugins/tree/master/packages/

    3、官方plugin实现解读

    查看了下,plugin各个平台实现都是单独的plugin项目,我们常用的url_launcher,实际上是6个plugin项目。。emmmm。。。


    image.png

    基本说明,各个平台都需要相关知识人员去实现,好吧,我做不到。。。
    我们项目里使用的时候引用的就是第一个url_launcher,然后查看url_launcher的pubspec.yaml文件,

    flutter:
      plugin:
        platforms:
          android:
            package: io.flutter.plugins.urllauncher
            pluginClass: UrlLauncherPlugin
          ios:
            pluginClass: FLTURLLauncherPlugin
          web:
            default_package: url_launcher_web
          linux:
            default_package: url_laucher_linux
          macos:
            default_package: url_laucher_macos
          windows:
            default_package: url_laucher_windows
    
    dependencies:
      flutter:
        sdk: flutter
      url_launcher_platform_interface: ^1.0.9
      url_launcher_web: ^0.1.5
      url_launcher_linux: ^0.0.1
      url_launcher_macos: ^0.0.1
      url_launcher_windows: ^0.0.1
    

    可以看到各个平台引用是不一样的,有pluginClass和default_package,pluginClass就是在当前plugin项目里实现了,直接引用这个类,default_package是引用包,这里可以理解为额外的第三方包依赖(这个包应该也可以在当前plugin项目里实现,然后引用)。

    4、windows平台

    我们打开url_laucher_windows里面的pubspec.yaml文件

    name: url_launcher_windows
    description: Windows implementation of the url_launcher plugin.
    version: 2.0.0
    homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_windows
    
    flutter:
      plugin:
        implements: url_launcher
        platforms:
          windows:
            pluginClass: UrlLauncherPlugin
    

    再来看下文件目录:


    image.png

    .cpp文件,作者知识盲区了,就不看具体代码了。。

    5、总结

    首先,一个plugin是可以搞定所有平台的,但是为什么官方这里要分开呢,我觉得以下2个原因:
    1、这不是一个人在写呀,分开写对于各个平台的开发人员多友好。
    2、在各平台各取所需,不用把所有的代码都集成到项目里去。

    相关文章

      网友评论

          本文标题:flutter plugin开发

          本文链接:https://www.haomeiwen.com/subject/aruddltx.html