當我的用戶注冊時,他會輸入他的電子郵件、用戶名和密碼。電子郵件和密碼存盤在 Firebase Auth 資料庫中。因此,為該用戶創建并關聯了一個 Id。(例如,kmupeDXnfEYnhbdpkvLUoFbIjnb2)。現在我想創建一個用戶個人資料(個人資料圖片、用戶名等)。為此,我必須創建一個 Firestore 集合和檔案,其用戶名和 ID 鏈接到 firebase 身份驗證 (kmupeDXnfEYnhbdpkvLUoFbIjnb2)。我不知道該怎么做有人可以幫助我嗎?非常感謝 !

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dev/reusable.dart';
import 'package:flutter_dev/home.dart';
class SignUp extends StatefulWidget {
const SignUp({super.key});
@override
State<SignUp> createState() => _SignUpState();
}
class _SignUpState extends State<SignUp> {
final TextEditingController _passwordTextController = TextEditingController();
final TextEditingController _emailTextController = TextEditingController();
final TextEditingController _userNameTextController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
extendBodyBehindAppBar: true,
appBar: AppBar(
backgroundColor: Colors.transparent,
elevation: 0,
title: const Text('Sign Up'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const SizedBox(
height: 20,
),
reusableTextField("Enter Username", Icons.person_outline, false,
_userNameTextController, context),
const SizedBox(
height: 20,
),
reusableTextField("Enter Email ID", Icons.email_outlined, false,
_emailTextController, context),
const SizedBox(
height: 20,
),
reusableTextField("Enter Password", Icons.lock_outline, true,
_passwordTextController, context),
const SizedBox(
height: 20,
),
signInsignUpButton(context, false, () {
final db = FirebaseFirestore.instance;
db.collection("users").doc("uid").set({
'fullName': _userNameTextController,
'email': _emailTextController,
'accountCreated': Timestamp.now(),
}).onError((e, _) => print("Error writing document: $e"));
FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text)
.then((value) {
print("Created New Account");
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => const Home()));
}).onError((error, stackTrace) {
print("Error ${error.toString()}");
});
}),
],
),
),
);
}
}
uj5u.com熱心網友回復:
我相信這會做你想要的:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dev/reusable.dart';
import 'package:flutter_dev/home.dart';
class SignUp extends StatefulWidget {
const SignUp({super.key});
@override
State<SignUp> createState() => _SignUpState();
}
class _SignUpState extends State<SignUp> {
final TextEditingController _passwordTextController = TextEditingController();
final TextEditingController _emailTextController = TextEditingController();
final TextEditingController _userNameTextController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
extendBodyBehindAppBar: true,
appBar: AppBar(
backgroundColor: Colors.transparent,
elevation: 0,
title: const Text('Sign Up'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const SizedBox(
height: 20,
),
reusableTextField("Enter Username", Icons.person_outline, false,
_userNameTextController, context),
const SizedBox(
height: 20,
),
reusableTextField("Enter Email ID", Icons.email_outlined, false,
_emailTextController, context),
const SizedBox(
height: 20,
),
reusableTextField("Enter Password", Icons.lock_outline, true,
_passwordTextController, context),
const SizedBox(
height: 20,
),
signInsignUpButton(context, false, () {
FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text)
.then((value) {
final db = FirebaseFirestore.instance;
db.collection("users").doc("uid/${value.user.uid}").set({
'fullName': _userNameTextController.text,
'email': _emailTextController.text,
'accountCreated': Timestamp.now(),
}).onError((e, _) => print("Error writing document: $e"));
print("Created New Account");
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => const Home()));
}).onError((error, stackTrace) {
print("Error ${error.toString()}");
});
}),
],
),
),
);
}
}
回呼FirebaseAuth.instance.createUserWithEmailAndPassword(是型別。UserCredential您可以uid通過以下方式訪問UserCredential:value.user.uid
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530603.html
標籤:Google Cloud Collective 扑火力基地镖
上一篇:ClickHouse(10)ClickHouse合并樹MergeTree家族表引擎之ReplacingMergeTree詳細決議
