虎視眈々と

Flutter × Firebaseを研究するアプリエンジニア

Cloud Functionsからアプリに結果をJsonで返す。

アプリから直接onCallメソッドを使ってCloud Functionsを呼び出した時に結果をアプリにjsonで返す方法について書きます。

アプリからCloud Functionsを直接呼び出す方法については下記をご覧ください

www.shogogeek.com

実装

jsonを返す

  const batch = firestore.batch();

~~~firestoreにbatchを使って流す何かしらの処理~~~~~

  return await batch.commit().then((doc) => {
    return {
      "groupId": groupId
    }
  }).catch((err) => {
    return {
      "error": err
    }
  });

肝になるのは return awaitthen の結果を return するまで待ちます。 結果がでたら、jsonを返せば完成です。

  • 受け取り側

受け取り側で注意しないといけないので、Flutterでは返ってくる型が Map<dynamic, dynamic> になるので注意が必要です。

Map<dynamic, dynamic> json = await CloudFunctions.instance.call(
        functionName: 'onDirectMessage',
        parameters: {"requestUserId": ownUid, "requestedUserId": requestUid});

return json["groupId"];