Приложение вылетает `получить Exited (sigterm)`, когда пользователь пытается зарегистрироваться в флаттер Android - PullRequest
0 голосов
/ 24 октября 2019

Я создал приложение во флаттере, которое использует provider для управления состоянием и firebase для аутентификации. Я новичок во флаттере, и я не уверен, как использовать provider с firebase в флаттере.

Любой, как я нашел способ сделать это, в котором я не уверен. И это сработало, оно создает пользователя в базе данных, но проблема, когда я регистрирую нового пользователя, вызывает сбой моего приложения.

Это мой код.

register_screen.dart

child: Container(
              decoration:
                  BoxDecoration(color: Color(kFloatingActionButtonColor)),
              child: Consumer<UserProvider>(
                builder: (context, userProvider, child) {
                  return FlatButton(
                    onPressed: () async{
                      try {
                        var newUser = await userProvider.register(emailText, passwordText);
                      if(newUser != null) {
                        Navigator.pushNamed(context, HomeScreen.id);
                      }
                      }catch(e) {
                        print(e);
                      }

                    },
                    child: Text(
                      'REGISTER',
                      style: TextStyle(color: Colors.white, fontSize: 20.0),
                    ),
                  );
                },
              ),
            ),

user_provider.dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/foundation.dart';

enum Status {Uninitialized, Authenticated, Authenticating, Unauthenticated}

class UserProvider extends ChangeNotifier {
  FirebaseAuth _auth;
  FirebaseUser _user;
  Status _status = Status.Uninitialized;
  UserProvider.instance(): _auth = FirebaseAuth.instance {
    _auth.onAuthStateChanged.listen(_onAuthStateChanged);
  }

  Status get status => _status;
  FirebaseUser get user => _user;

  Future<bool>register(String email, String password) async{
    try {
      _status = Status.Authenticating;
      notifyListeners();
      await _auth.createUserWithEmailAndPassword(email: email, password:password);
      return true;
    }catch(e) {
      _status = Status.Unauthenticated;
      notifyListeners();
      return false;
    }
  }


  Future<void>_onAuthStateChanged(FirebaseUser firebaseUser)async {
    if(firebaseUser == null) {
      _status = Status.Unauthenticated;

    }else {
      _user = firebaseUser;
      _status = Status.Authenticated;
    }
    notifyListeners();
  }
}

Любая помощь будет отличной. Спасибо.

...