Flutter 創(chuàng)建插件package

最近在使用flutter開發(fā)新項目,相信很多開發(fā)者在開發(fā)初期都需要考慮到項目的健壯性以及擴(kuò)展性,在使用flutter開發(fā)初期時就需要考慮到這些,避免項目后期逐漸擴(kuò)大之后工程代碼的 污染;千里之堤毀于蟻穴的道理我相信在代碼中會得到完美的詮釋。
為了分離比較常規(guī)代碼以及給未來多端使用通用組件,所以在立項初期考慮到使用git的submodule以及插件package來分離通用代碼,后來經(jīng)過多方考量還是使用到了flutter的package;
以下是創(chuàng)建flutter插件步驟,僅做記錄:

終端cd到flutter項目目錄下

# 創(chuàng)建組件命令 例:創(chuàng)建一個以demo命名的組件庫
# 1、只創(chuàng)建dart語言庫
flutter create --template=package demo
# 2、包含iOS swift、android java 語言庫
flutter create --org com.example --template=plugin --platforms=android,ios -a java demo
# 3、包含iOS Object-C、android java 語言庫
flutter create --org com.example --template=plugin --platforms=android,ios -a java -i objc  demo
# 4、包含iOS Object-C、android Kotlin 語言庫
flutter create --org com.example --template=plugin --platforms=android,ios -i objc demo
# 5、包含iOS Swift、android Kotlin 語言庫
flutter create --org com.example --template=plugin --platforms=android,ios demo
image.png

檢查插件

flutter packages pub publish --dry-run

發(fā)布插件

flutter packages pub publish --server=https://pub.dartlang.org

pubspec.yaml是整個package插件庫的核心配置文件,可以在配置文件中自定義當(dāng)前插件庫的基本信息,pubspec.yaml文件參數(shù)解釋:

# 項目名稱,必填字端
name: newtify


# 版本號,非必填
# 若需要將項目托管在pub.dev則該字段必填。
version: 1.2.3


# 項目描述,非必填
# 若需要將項目托管在pub.dev則該字段必填。
description: >-
  Have you been turned into a newt?  Would you like to be?
  This package can help. It has all of the
  newt-transmogrification functionality you have been looking
  for.


# 項目主頁,非必填
# 該項目的介紹主頁,填寫域名
homepage: https://example-pet-store.com/newtify


# 開發(fā)文檔位置,非必填
# 與`homepage`不同,若該項目還包含其他文檔,可以將文檔的地址添加到該節(jié)點下。如果項目托管在pub.dev,該節(jié)點顯示項目的API信息。
documentation: https://example-pet-store.com/newtify/docs


# 項目的遠(yuǎn)程庫,非必填
# 若該項目是lib或開源庫,這個配置文件用于關(guān)聯(lián)庫的來源地址,最好填寫有效的地址,否則會無法關(guān)聯(lián)獲取項目。
repository: https://github.com/<user>/<repository>


# 問題追蹤頁面,非必填
# 若該項目是一個開源且隨時更新的項目,可以通過填寫該屬性,標(biāo)明該項目的問題追蹤文檔站點,如果使用pub.dev來進(jìn)行項目托管,則pub.dev將嘗試通過該字段顯示該項目的問題跟蹤鏈接。若該項目托管在github,則可以將該字段填寫為github的issues
issue_tracker: https://github.com/<user>/<repository>/issues


# 項目的第三方插件依賴,在這個標(biāo)簽中列出了該項目正常工作所需的每一個軟件包與版本。以下通過實例詳解該標(biāo)簽的詳情
dependencies:
  # 實例1 直接寫明約束版本,若該插件是發(fā)布在https://pub.dev/ 之上,IDE會直接在項目目錄下執(zhí)行`flutter packages get`來下載其插件的最新版本
  transmogrify: 
  # 實例2 該插件是在實例1的基礎(chǔ)上進(jìn)行延伸,其中`^1.4.0`的含義是約束了版本號,也就是在該項目中,需要使用1.4.0版本
  transmogrify: ^1.4.0
  #實例3 若該插件未部署在pub.dev之上,則可以通過URL來指定出插件下載的源
  transmogrify:
    hosted:
      name: transmogrify
      url: http://some-package-server.com
  #實例4 基于實例3,其中version表明了使用該插件的版本信息
  transmogrify:
    hosted:
      name: transmogrify
      url: http://some-package-server.com
    version: ^1.4.0
  #實例5 若該插件是發(fā)布在git上,可以用以下方式來進(jìn)行插件獲取,默認(rèn)獲取master下代碼
  transmogrify:
    git:
      url: git://github.com/munificent/kittens.git
  #實例6 基于實例5,其中ref標(biāo)明獲取的分支信息
  transmogrify:
    git:
      url: git://github.com/munificent/kittens.git
      ref: some-branch
  #實例7 基于實例5,若插件只是在項目中的某一個目錄中,可以通過path來指定插件位置
  transmogrify:
    git:
      url: git://github.com/munificent/kittens.git
      path: path/to/kittens
  #實例8 若插件在本地某一目錄,可以通過指定path來找到該插件
  transmogrify:
    path: /Users/me/transmogrify


  #指定版本,若該項目使用的插件需要約束版本,則方法如下
  #實例1 在該項目中,此插件指定版本為1.4.0
  transmogrify: ^1.4.0
  #實例2 在該項目中,此插件最低版本為1.2.3
  transmogrify: ">=1.2.3"
  #實例3 在該項目中,此插件最低支持2.0.0版本,但不支持3.0.0以上版本
  transmogrify: ">=2.0.0 <3.0.0"
  #實例4 在該項目中,此插件最高支持到1.2.3以下版本
  transmogrify: "<1.2.3"


  #指定Flutter SDK
  #實例1 項目必填項,指定SDK,并獲取SDK最新版
  flutter:
    sdk: flutter
  #實例2 基于實例1,指定SDK版本號
  flutter:
    sdk: flutter
    version: ">=2.0.0-dev.68.0 <3.0.0"
  #實例3 另外一種寫法
  flutter_driver:
    sdk: flutter
    version: ^0.0.1


# 區(qū)別于dependencies標(biāo)簽,dependencies是生產(chǎn)環(huán)境依賴庫版本,dev_dependencies是開發(fā)環(huán)境依賴庫版本,該環(huán)境僅在開發(fā)調(diào)試時使用。標(biāo)簽規(guī)則同dependencies。
dev_dependencies:
  transmogrify: ^1.4.0


# 重寫依賴包,會強(qiáng)制下載對應(yīng)依賴包,并可以對該依賴包進(jìn)行重寫。
dependency_overrides:
  transmogrify: ^1.4.0


# Dart2開始需要添加該標(biāo)簽,聲明該項目是基于dart的SDK哪個版本進(jìn)行編譯,隨著dart平臺的發(fā)展,可能在某個版本后不再向下兼容,所以這個標(biāo)簽約束了使用dart的版本
# 例,以下約束說明此項目僅適用于2.0到3.0的dart2 SDK編譯。
environment:
  sdk: '>=2.0.0 <3.0.0'


# 可以將Dart2的可執(zhí)行腳本引入到flutter之中,作為插件使用,但前提是這些腳本均可以在命令行正常調(diào)用。
executables:
  <name-of-executable>: <Dart-script-from-bin>


# 指定生成發(fā)布包的位置
# 非必填
# 若不填寫,則默認(rèn)使用pub.dev站點進(jìn)行發(fā)布,但若希望阻止發(fā)布,則需要聲明為none。
# 同時此設(shè)置可以將flutter項目發(fā)布到自定義的服務(wù)器之中。
publish_to: none


#
# 項目中配置聲明方式
# 用于在項目中添加資源、設(shè)置字體、配置插件參數(shù)等。
fluuter:
  # 實例1 添加資源
  assets:
      - images/park.jpg
  #設(shè)置字體,樣式,可以通過聲明family來設(shè)置字體分組
  fonts:
      - family: Schyler
        fonts:
          - asset: fonts/Schyler-Regular.ttf
          - asset: fonts/Schyler-Italic.ttf
            style: italic


      - family: Trajan Pro
        fonts:
      - asset: fonts/TrajanPro.ttf
      - asset: fonts/TrajanPro_Bold.ttf
        weight: 700


#
# 其他聲明方式


# 實例1 定義常量
age: 22
boolitem: true
name: 'hello'


#實例2 定義數(shù)組
server:
    - aaaaaa
    - bbbbbb
    - dddddd
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容