Флаттер код для создания токена fcm в ScopedModel и сохранения в firestore не работает - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь создать токен fcm и сохранить его в firestore при входе в систему, но безуспешно. Логика входа в класс ScopedModel:

void signIn({@required String email, @required String pass,
 @required VoidCallback onSuccess, @required VoidCallback onFail}) async {
      isLoading = true;
      notifyListeners();
      _auth.signInWithEmailAndPassword(email: email, password: pass).then(
        (user) async {
          firebaseUser = user;
          await _loadCurrentUser();
          onSuccess();
          isLoading = false;
          notifyListeners();
      }).then((_) async{
        print("calling _saveFCMtoken");
        await _saveFCMtoken();
      }).catchError((e){
        onFail();
        print("erro1: ${e.toString()}");
        isLoading = false;
        notifyListeners();
      });
}

    Future<Null> _saveFCMtoken() async {
          print("calling _getToken");
          await _messaging.getToken().then((token) async{
            print("token: $token");
          }).then((token) async{
            print("calling saveToken");
    await firestore.instance.collection("fcm")
    .document(firebaseUser.uid)
    .setData({"token":token});
          }).catchError((e){
            print("erro2: ${e.toString()}");
          });
    }

Никаких ошибок не происходит, и вход в систему проходит нормально. " print (" вызов _getToken "); " достигнут, но никогда " print (" токен: $ token "); ", ни " print (" вызов saveToken ") ; » Попытался извлечь "await" из " await _messaging.getToken (). Then ((token) async {... ", но результат тот же.

Вот мой импорт и переменные инициализации

import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:scoped_model/scoped_model.dart';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

class UserModel extends Model {
  final FirebaseMessaging _messaging = FirebaseMessaging();
  FirebaseAuth _auth = FirebaseAuth.instance;
  FirebaseUser firebaseUser;

Нужна помощь в выяснении, как заставить это работать. Пожалуйста, кто-нибудь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...