Flutterでfvmを適用する

 ・ 1 min

photo by Radek Skrzypczak on Unsplash

プロジェクトでFlutter 3.24.2バージョンとgo_router 14.2.3バージョンを使っていて発生したエラーを解決するためにfvmを使うことになった内容をまとめました。

普段メールでFlutterのアップデート情報を受け取っているので、特に問題がなければ常に最新バージョンにアップデートしていました。これまでそうしていて大きなエラーに遭遇しなかったので安心していました。
しかし今回はプロジェクトを開発モードで実行し、途中の変更をホットリロードで適用すると、BuildOwner.scheduleBuildFor()関連のエラーが出始めました。

Flutter issueで関連するバグを見つけ、エラーがgo_routerに起因していることが分かりました。go_routerをプロジェクトで使わずにデフォルトのrouter方式を使うとエラーが出ませんでした。しかし開発中にページ遷移のたびにgo_routerを使えないのは不便に感じました。

かといってFlutterバージョンを下げるにはすぐ解決されそうな問題に思えたし、そのままにするとgo_routerを使えませんでした。

そこで解決策として、プロジェクトでgo_routerが使えるバージョンに戻せばいいと考え、fvmを適用してみることにしました。

fvmはFlutter Version Managementで、pyenvnvmのようなライブラリと使用目的がほぼ同じです。
このようなバージョン管理を使う理由は、プロジェクトを誰が作業しても同じ環境で作業できるようにサポートしてくれるからです。

MacOSでfvmをインストールしようとしました。Installationの指示に従えば大丈夫です。

ただ、curlでインストールしようとしたところエラーが発生しました。

image

issueを調べてみるとまだ解決されていない問題だったので、Homebrewでインストールを進めました。

このアプローチが正しいか分かりませんが、3.24.2を使っていたので動作するバージョンを探しました。
Flutter Tagsを見ると、これまでリリースされたバージョンを確認できます。3.24.1も駄目だったので3.24.2に上げてみたのですが、minorバージョンは避けようと思い3.22.3バージョンに下げることにしました。

VS CodeでFlutterプロジェクトを開き、ターミナルにfvm use 3.22.3を入力しました。

しかしiosフォルダにいることに後から気づきました。皆さんもコマンド操作する時、必ずパスがプロジェクトのルートから始まっているか確認してくださいね。

コマンドを入力するだけですぐ終わると思っていましたが、構成済みの環境があったのでエラーが出ました。

image

Dart SDKも最新のFlutterバージョンに合わせていたので、これを変更する必要がありました。pubspec.yamlファイルを開いてenvironmentを修正しました。

environment:
  sdk: '>=3.4.4 <4.0.0'

それでも複数のエラーが発生しました。ほとんどが既存で使っていたパッケージが最新バージョンのためダウングレードが必要というエラーでした。少し面倒な方法でしたが、pub.devで問題になっているパッケージを一つずつ確認し、以前のバージョンに戻しながらfvm use 3.22.3を繰り返し試しました。問題がなければそのパッケージのエラーメッセージは表示されなくなります。3〜4個のパッケージを解決しながらこの作業を繰り返しました。一度に解決するコマンドがないかfvmサイトで探しましたが、特にないようでした。

現在のFlutterバージョンに最適なバージョンを適用できる方法をご存知の方がいらっしゃったら、共有をお願いします。

image

こうしていくとインストールが完了し、以下のようなメッセージが表示されるはずです。
VS Codeを再起動すればうまくいくはずです。

image

プロジェクト内部を見ると.fvmというフォルダが作成されているはずです。これで正常に実行できるはずです!

image

少し手間がかかるかもしれませんが、この作業は慣れれば20分もかからないでしょう。


Your vision will become clear only when you look into your heart. Who looks outside, dreams. Who looks inside, awakens.

— Carl Jung


他の投稿
アプリアイコンを作る時に参考にすべきこと 커버 이미지
 ・ 1 min

アプリアイコンを作る時に参考にすべきこと

生命 커버 이미지
 ・ 3 min

生命

VS Codeで型を確認するショートカットキー 커버 이미지
 ・ 1 min

VS Codeで型を確認するショートカットキー