# #flutter #firebase-authentication
Вопрос:
У меня небольшая проблема, у меня есть ошибка, которая начала возникать, когда я изменил фрагмент кода, я только добавил «попробуй, поймай».
Учетная запись, созданная со старым кодом, все еще работает, но не новая, у меня эта ошибка после регистрации (есть перенаправление на страницу участника), и при входе в систему, только на новой учетной записи пользователя.
Ошибка (первые две строки-это отпечатки):
flutter: {nom: Toto, prenom: Tata, estAbonne: false, books: [], uid: xyDSRJ6o7ebgjnjzuoeK47ZrDId2}
flutter: User(displayName: null, email: toto@tatagdjg.fr, emailVerified: false, isAnonymous: false, metadata: UserMetadata(creationTime: 2021-08-22 00:54:47.946, lastSignInTime: 2021-08-22 00:54:47.946), phoneNumber: null, photoURL: null, providerData, [UserInfo(displayName: null, email: toto@tatagdjg.fr, phoneNumber: null, photoURL: null, providerId: password, uid: toto@tatagdjg.fr)], refreshToken: , tenantId: null, uid: xyDSRJ6o7ebgjnjzuoeK47ZrDId2)
════════ Exception caught by widgets library ═══════════════════════════════════
The following assertion was thrown building MainController(dirty, state: _MainControllerState#c1d7a):
A build function returned null.
The offending widget is: MainController
Build functions must never return null.
To return an empty space that causes the building widget to fill available room, return "Container()". To return an empty space that takes as little room as possible, return "Container(width: 0.0, height: 0.0)".
firebase_handler.dart (я думаю, что ошибка здесь):
Future<User> createUser(String mail, String pwd, String nom, String prenom,
BuildContext context) async {
prenom = Gadgets().capitalize(prenom);
nom = Gadgets().capitalize(nom);
try {
final userCredential = await authInstance.createUserWithEmailAndPassword(
email: mail, password: pwd);
final User user = userCredential.user;
Map<String, dynamic> memberMap = {
nomKey: nom,
prenomKey: prenom,
estAbonneKey: false,
booksKey: [],
uidKey: user.uid
};
//Add User
await user.sendEmailVerification();
addUserToFirebase(memberMap);
print(memberMap);
print(user);
return user;
} on FirebaseAuthException catch (e) {
if (e.code == 'weak-password') {
print('The password provided is too weak.');
_show(context, "Mot de passe faible");
} else if (e.code == 'email-already-in-use') {
print('The account already exists for that email.');
_show(context, "Email deja existant");
}
} catch (e) {
print(e);
}
}
главный контроллер.дротик:
class MainController extends StatefulWidget {
String memberUid;
User user;
MainController({@required this.memberUid, this.user});
@override
_MainControllerState createState() => _MainControllerState(user: user);
}
class _MainControllerState extends State<MainController> {
// ignore: cancel_subscriptions
StreamSubscription streamSubscription;
Member member;
User user;
_MainControllerState({this.user});
@override
void initState() {
super.initState();
streamSubscription = FirebaseHandler()
.fireUser
.doc(widget.memberUid)
.snapshots()
.listen((event) {
setState(() {
member = Member(event);
});
});
}
@override
Widget build(BuildContext context) {
if (member == null) {
return Loading();
} else {
if (user.emailVerified) {
return HomePage(member: member);
} else {
VerifiedMailPage();
}
}
}
}
Заранее благодарю вас за вашу помощь
Комментарии:
1. Ошибка указывает на то, что ваша
build
функция имеет путь к коду, который не возвращает значение, не являющеесяnull
значением.VerifiedMailPage();
Линия должна бытьreturn VerifiedMailPage();
такой .2. Звучит как ответ @jamesdlin 🙂