![](/img/trans.png)
[英]FutureBuilder The method '[]' was called on null. Receiver: null
[英]Flutter The method was called on null. Receiver: null
我正在制作一個使用 firebase api 的 flutter 登錄頁面。 但是每當我單擊登錄或注冊按鈕時,它都會向我顯示該方法被調用為空值的錯誤。
這是 submitForm 方法的代碼
AuthMode _authMode = AuthMode.Login;
User _user = User();
FirebaseApi _api;
void _submitForm() {
if (!_formKey.currentState.validate()) {
return;
}
_formKey.currentState.save();
AuthNotifier authNotifier =
Provider.of<AuthNotifier>(context, listen: false);
if (_authMode == AuthMode.Login) {
print('Email: ${_user.email}, Password: ${_user.password}');
_api.login(_user, authNotifier);
} else {
_api.signup(_user, authNotifier);
}
}
這是我的用戶類
class User {
String username;
String email;
String password;
User();
}
authNotifier 類: import 'package:firebase_auth/firebase_auth.dart'; 導入 'package:flutter/widgets.dart';
class AuthNotifier with ChangeNotifier {
FirebaseUser _user;
FirebaseUser get user => _user;
void setUser(FirebaseUser user) {
this._user = user;
notifyListeners();
}
}
和 firebase_api 類:
class FirebaseApi {
login(User user, AuthNotifier authNotifier) async {
AuthResult authResult = await FirebaseAuth.instance
.signInWithEmailAndPassword(email: user.email, password: user.password)
.catchError((error) => print(error.code));
if (authResult != null) {
FirebaseUser firebaseUser = authResult.user;
if (firebaseUser != null) {
print("Log In: $firebaseUser");
authNotifier.setUser(firebaseUser);
}
}
}
signup(User user, AuthNotifier authNotifier) async {
AuthResult authResult = await FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: user.email, password: user.password)
.catchError((error) => print(error.code));
if (authResult.user != null) {
UserUpdateInfo updateInfo = UserUpdateInfo();
updateInfo.displayName = user.username;
FirebaseUser firebaseUser = authResult.user;
if (firebaseUser != null) {
await firebaseUser.updateProfile(updateInfo);
await firebaseUser.reload();
print("Sign up $firebaseUser");
FirebaseUser currentUser = await FirebaseAuth.instance.currentUser();
authNotifier.setUser(currentUser);
}
}
}
signout(AuthNotifier authNotifier) async {
await FirebaseAuth.instance
.signOut()
.catchError((error) => print(error.code));
authNotifier.setUser(null);
}
getCurrentUser(AuthNotifier authNotifier) async {
FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
if (firebaseUser != null) {
authNotifier.setUser(firebaseUser);
}
}
}
你必須構造_api
變量,否則它將是一個null
。
FirebaseApi _api = FirebaseApi();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.