Я пытаюсь создать токен 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;
Нужна помощь в выяснении, как заставить это работать. Пожалуйста, кто-нибудь?