ローカルで動かすためだけに Flutter Web を用意したところ、起動して真っ白のまま先に進まない状態になりました。エラーも出ません。原因は Firebase の設定ファイルをダミー値のままにしていたことでした。
01 — 何が起きるか
App Check の初期化が返ってこない
Web 版の App Check は、初期化時に reCAPTCHA の検証を行います。
このとき渡す設定が実在しないダミー値だと、検証は失敗ではなく待ち続ける状態になります。
例外にならないので try/catch では止められず、初期化を待っている画面から先へ進みません。
「エラーが出ないまま止まる」ので見当がつきにくいのが厄介なところです。 自分は最初、ネットワークかビルド設定を疑って時間を使いました。
02 — 回避
ダミーのときだけ初期化を飛ばす
設定がダミー値かどうかを見て、そのときだけ App Check の初期化を飛ばすようにしました。 本物の設定に差し替われば、分岐は自動的に通常の初期化を通ります。後で消す必要がない形です。
// ダミー設定のときだけ App Check を初期化しない
if (options.apiKey != 'placeholder-api-key') {
await FirebaseAppCheck.instance.activate(
webProvider: ReCaptchaV3Provider(siteKey),
);
}
あわせて、設定ファイルの冒頭に「これはダミーである」という警告コメントを入れました。 数週間後の自分は、この種の前提をきれいに忘れます。
03 — ついでに
Web だけをスキャフォールドする
このプロジェクトは、当初 iOS・Android・Web のどのディレクトリも無い状態でした。 Web だけを足したい場合はプラットフォームを指定して生成します。
flutter create --platforms=web \
--project-name torimatalk --org jp.torimatalk .
既存の lib/ や pubspec.yaml が上書きされないかは心配になる部分ですが、
事前にバックアップを取って差分を確認したところ影響はありませんでした。
それでも、走らせる前にコピーを取っておくことをおすすめします。
Follow
こういう記録を置いています
個人開発でつまずいた話や、作りかけのものは Instagram(@kenpiro1012)と note にも置いています。 記事の一覧は記事ページにまとまっています。