0
0

More than 3 years have passed since last update.

FlutterでFirebaseエミュレーターへの接続調査、バージョン問題が解決できないよ

Posted at

最初の記事、メモ書きです。 あまりキレイに書くつもりが無いので、あしからず
できねーよっていう記録なので読まないほうがいいかもです。(じゃー書くな、は無しで)

何を開発してるか (読み飛ばし推奨)

楽器練習アプリ

何気なく、楽器練習アプリを開発したいとツイートしたら欲しいという要望がたくさんたくさん(4件)寄せられたので、Flutterを調べつつ開発に挑戦中です。
楽だけど覚えることも多いですね。 言わなきゃよかったw
なので、仕事じゃなくて趣味開発です。

エンジニアって、大体こんなの欲しいと思って着手しても挫折するよね (あるあるー)
でも応援してくれる人がいるので頑張ってます。
というか、それが分かってたのでいろんな人を巻き込んで、やらざるを得ないに追い込んでます。
これに関しては、気が向いたら記事を別に書くかも、書かないかも

現状の学習ステータス

Flutterのレイアウトはなんとなく作れるようになったので、実装やデータ保存周りを調べてます。
学習の手順は、人それぞれだと思いますが、私の場合は、Android Projectを作りまくります。
壊れてもいいように練習プロジェクトを10個ほど作ったあと、プロトタイプを作りはじめました。

データどこに保存する問題

楽器の練習結果は録音するのですが、端末内に保存しとけばいいかと思ってました。
しかし、壊れたり、端末変更したら消える問題を解決するためにはやっぱりFirebaseが必要なのかなと
録音データは、まぁ、iCloudとか、Googleドライブでいいにしても、設定とかがね結局、mBaaS が必要だねと。
サーバ周りまで開発してたらモチベーション続かないので

ここから本題 ー やっぱFirebaseが必要そうだね、はぁ、やりたくないw

NEC Mobile Backendとか、AWS Amplify Flutter とかありますけど、仕事じゃないので技術選定は、まぁ、これでいいんじゃない程度で選択
サーバレスとかいいつつも考えないといけないこと増えるの分かってし、やってるうちにやりたいことが増えて結局できない沼に入りそうですが、やっぱりいるよね、しょうがないやるか、、、みたいな。

まずは写経

Qiitaの以下の記事を参考にしつつ、現状と合わないところは、調整して、AndroidでもiPhoneでもなんとか動くようにしました。

FlutterでFirebaseを使ってみる〜投票アプリ〜

どこを直したのかは気が向いたら追記します。
多分、エンジニアならそんなに難しくない、IDEのヒントに従えばいいし

Firebaseは、ローカルエミュレータがあるらしい。

Firebase Local Emulator Suite の概要

ここからいろいろ変更して、覚えていこうと思ったら、Firebaseには、エミュレータがあるらしいと
この方が楽そう。

しかし! ここからがハマりポイント
(※ エミュレータのインストールと起動はすんなりいけました。)

検索してると既に記事を書いている方が、monoさん。

FlutterアプリからFirebaseエミュレーターに接続
記事検索すると、だいたいこの方の記事に大体あたりますね。日本では一番くわしいのでは?

うん、動かない、run.dart のサンプルになってる以下の部分、Firestore がバージョン上がって、FirebaseFirestone になったタイミングで、
.instance.settings が無くなってる?

  if (isEmulator) {
    final domain = (!kIsWeb && Platform.isAndroid) ? '10.0.2.2' : 'localhost';
    CloudFunctions.instance.useFunctionsEmulator(origin: 'http://$domain:5001');
    await Firestore.instance.settings(
      persistenceEnabled: false,
      host: '$domain:8080',
      sslEnabled: false,
    );
  }

で、この問題を検索したら、

FlutterでFirebase Firestore設定を構成する方法

という記事が、あり

cloud_firestore: ^0.8.2+1

にすると良い、、、、としたら、別のエラーが、最初の写経で作った main.dart がエラーです。

コメントは、自分で追記した部分

          // サンプルから修正 .updateData → .update
          onTap: () => record.reference.updateData({'votes': FieldValue.increment(1)}),

.incrementなんてねーよ!と言われます。どうもこのメソッド日本人の方の提案らしいのですが、なぜバージョンが新しくなって無くなるのか不明

Cloud Firestoreに追加されたFieldValue.increment()は期待以上!!

さっきは、これで動いてたのにということで、pubspec.yaml のバージョンをゴニョゴニョしてみましたが、まだ解決出来ず。

dependencies:
  flutter:
    sdk: flutter
  firebase_core: "^0.2.5+1"
  cloud_functions: ^0.6.0
  firestore_ref: ^0.9.0-dev
  cloud_firestore: ^0.8.2+1

この依存関係の解決方法が、分からない。

今日(2020/08/28)時点で同じことやろうとしたら同じ道をたどると思うので残しておきます。解決できたら追記予定

というか、解決した人がいたらコメントで教えていただけると嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0