uisetlistPlayerをFlutterで書き直そうとしていました

TL;DR

なんやかんやあって途中で断念しました。

uisetlistPlayerって?

uisetlist互換アプリケーション向けのプレーヤー機能のみのネイティブアプリケーション。もともとはKotlinで書いてました。
github.com

Flutterで書き直そうと思った理由

Webとのクロスプラットフォームがふとやりたくなったので。あとはクロスプラットフォームフレームワークを触ってみたかったので。

断念した理由

使われる見込みがないアプリケーションだったためモチベーションの維持が困難であったことが最も大きな理由です。ネイティブ側のアプリがある程度形になってきた時点で、フレームワークを触るという目的がある程度達成されたこともあります。

得られた知見

クロスプラットフォームはネイティブとWebになると幻想になってくる

Flutterは大抵の機能は探せばライブラリがあるのですが、AndroidiOSのみサポートというものが多い印象でした。そのため、Webもサポートしたいとなるとプラットフォームごとの分岐がネイティブ開発中時点ですら増えることが見えている状況でした。

細かいことをやり始めると車輪の再発明がどうしても必要になってくる

前項で触れたライブラリですが、要求に合致するものがあればいいのですがなければどうしても独自で実装する必要が出てきます。
uisetlistPlayerではコア機能となるYouTubeのプレーヤー部分ですが、代表的なライブラリと思われるyoutube_player_iframeでは実現したいことが実現できず、結局独自で実装しました。
バックグラウンド再生時の通知作成もawesome_notificationsを使用しようとしましたが、これも使い方が悪いのかボタンがアイコンで表示されず……

ネイティブ開発とは異なるデータ設計が求められる

ネイティブだとクラス単位はActivityやFragmentであることが多かったですが、Flutterですとより細かくListやその各要素などのWidget単位になります。Providerを使用すればWidget間でデータの相互作用もできますが、どうしても大域変数のような感じになってしまうため、なんでもそこに詰めると散らかった感じになってしまいます。
どちらかと言えばWebフロントエンドの設計思想に近いような感じがしました。

今後について

作成中のコードはリポジトリのflutter_portingブランチにCommit済みです。本アプリの開発は現時点ではCloseする予定です。
次の開発目標とか決めていませんが、何か見つけます。そのうち。