TOP(About this memo)) > 一覧(Flutter) > パッケージ開発
TODO
公式
基本
- パッケージ構成
- 種類
- Dart package
- Dartで書かれた一般的なパッケージ
- Flutter frameworkに依存
- Plugin package
- Dartコードで記述されたAPIとプラットフォーム固有の実装を組み合わせたパッケージ
- FFI plugin package
- Dart コードで記述された API と、Dart FFI ( Android、iOS、macOS ) を使用するプラットフォーム固有の実装を組み合わせたパッケージ
- 作成
flutter create --template=package hello
- パッケージのpubspec.lockはignore対象となる
パッケージの公開
- パッケージの公開
- プレリリース
- セマンティックバージョニングにしたがって、suffixをバージョンへつける。
- 例
- pubは安定版が利用可能な場合はそちらを優先するため、ユーザーがプレリリースでテストしたい場合はpubspec.ymlで^2.0.0や^2.1.0ではなく ^2.1.0-dev.1 を指定する。
プラグインパッケージ
フェデレーションプラグイン
- さまざまなプラットフォームのサポートを個別のパッケージに分割する方法
- プラグインパッケージを作成する場合は、基本的にフェデレーションプラグインによって作成する。
- フェデレーションプラグインには以下のパッケージが必要となる。
- アプリ向けパッケージ
- プラットフォーム パッケージ(ios, Android, windows 等)
- プラットフォームインターフェースパッケージ
pub.devにパブリッシュされていないパッケージを利用する
その他
- https://pub.dev/packages/plugin_platform_interface
- implementsではなくextendsを強制させる仕組みを提供
- 該当のクラスは、PlatformInterfaceというinterfaceをextendsすることでこの仕組みを利用できる。
- パッケージベンダーが新しいAPIを既存のクラスに導入した際、利用者がそのクラスをimplementsしているとコンパイルエラーとなってしまうため。
- それを回避するためにパッケージベンダーは該当のクラスにplugin_platform_interfaceを継承させることで、もし開発者がimplementを使用した場合に動的にエラーを出力することができる。
- ただし、Dartのbaseキーワードの導入されたため、このパッケージは今後非推奨となる可能性がある。
- 例えば permission_handlerパッケージ PermissionHandlerPlatformクラスが利用していた。
(参考)Semantic Versioning 2.0.0-rc.1