firebase - Flutter Web)注册后用户模型无法上传到firestore
问题描述
在flutter web上通过firebase Auth注册成为会员后,我将把用户模型上传到数据库。如果注册,我可以很好地注册 Firebase Auth。但是,之后,在上传到数据库时会输出错误。
pubspec.uaml
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
firebase_core: ^0.5.0 #웹을 위해 추가?
firebase_auth: ^0.18.0 #0.16.1
cloud_firestore: ^0.14.0 #0.13.7
firebase_storage: ^4.0.0 #3.1.6
flutter_web_frame: ^0.0.2 #웹에서 최대 사이즈를 지정해주는 패키지
carousel_slider: ^3.0.0
get: ^3.3.0
cached_network_image: ^2.2.0+1
provider: ^4.3.3
身份验证和 Firestore 代码
class Transformers {
//DocumentSnapshot -> UserModel Transform
final toUser = StreamTransformer<DocumentSnapshot, UserModel>.fromHandlers(
handleData: (snapshot, sink) async {
sink.add(UserModel.fromSnapShot(snapshot));
}
);
}
class UserNetworkRepo with Transformers{
//When signing up, check if user model is registered in the firestore and upload if not.
Future<void> attempCreatUser({String userKey, String userEmail}) async {
final DocumentReference userRef =
FirebaseFirestore.instance.collection(COLLECTION_USERS).doc(userKey);
//get user document
DocumentSnapshot snapshot = await userRef.get();
//check user database
if (!snapshot.exists) {
return await userRef.set(UserModel.getMapForCreatUser(userEmail));
}
}
Stream<UserModel> getUserModelStream(String userKey) {
return FirebaseFirestore.instance
.collection(COLLECTION_USERS)
.doc(userKey)
.snapshots()
//documentSnapshot data -> UserNodel
.transform(toUser);
}
在调试过程中,StreamTransformer 刹车,然后输出以下错误。
TypeError: Cannot read properties of null (reading 'Symbol(dartx._get)')
at user_model.UserModel.fromSnapShot.user_model.UserModel.fromMap (http://localhost:65386/packages/omd_test/model/user_model.dart.lib.js:103:42)
at new user_model.UserModel.fromSnapShot (http://localhost:65386/packages/omd_test/model/user_model.dart.lib.js:113:34)
at http://localhost:65386/packages/omd_test/repo/helper/transformer.dart.lib.js:36:18
at Generator.next (<anonymous>)
at runBody (http://localhost:65386/dart_sdk.js:40666:34)
at Object._async [as async] (http://localhost:65386/dart_sdk.js:40697:7)
at http://localhost:65386/packages/omd_test/repo/helper/transformer.dart.lib.js:35:137
at _HandlerEventSink.new.add (http://localhost:65386/dart_sdk.js:39044:11)
at _SinkTransformerStreamSubscription.new.[_handleData] (http://localhost:65386/dart_sdk.js:38869:34)
at _RootZone.runUnaryGuarded (http://localhost:65386/dart_sdk.js:40429:11)
at _ForwardingStreamSubscription.new.[_sendData] (http://localhost:65386/dart_sdk.js:33989:22)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:33935:26)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:38197:20)
at _MapStream.new.[_handleData] (http://localhost:65386/dart_sdk.js:38328:19)
at _ForwardingStreamSubscription.new.[_handleData] (http://localhost:65386/dart_sdk.js:38225:37)
at _RootZone.runUnaryGuarded (http://localhost:65386/dart_sdk.js:40429:11)
at _ForwardingStreamSubscription.new.[_sendData] (http://localhost:65386/dart_sdk.js:33989:22)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:33935:26)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:38197:20)
at _HandleErrorStream.new.[_handleData] (http://localhost:65386/dart_sdk.js:38403:19)
at _ForwardingStreamSubscription.new.[_handleData] (http://localhost:65386/dart_sdk.js:38225:37)
at _RootZone.runUnaryGuarded (http://localhost:65386/dart_sdk.js:40429:11)
at _ForwardingStreamSubscription.new.[_sendData] (http://localhost:65386/dart_sdk.js:33989:22)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:33935:26)
at _ForwardingStreamSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:38197:20)
at _MapStream.new.[_handleData] (http://localhost:65386/dart_sdk.js:38328:19)
at _ForwardingStreamSubscription.new.[_handleData] (http://localhost:65386/dart_sdk.js:38225:37)
at _RootZone.runUnaryGuarded (http://localhost:65386/dart_sdk.js:40429:11)
at _BroadcastSubscription.new.[_sendData] (http://localhost:65386/dart_sdk.js:33989:22)
at _BroadcastSubscription.new.[_add] (http://localhost:65386/dart_sdk.js:33935:26)
at _SyncBroadcastStreamController.new.[_sendData] (http://localhost:65386/dart_sdk.js:34655:34)
at _SyncBroadcastStreamController.new.add (http://localhost:65386/dart_sdk.js:34449:24)
at http://localhost:65386/packages/cloud_firestore_web/src/interop/utils/utils.dart.lib.js:367:22
at Object._checkAndCall (http://localhost:65386/dart_sdk.js:5586:16)
at Object.dcall (http://localhost:65386/dart_sdk.js:5591:17)
at Object.ret [as next] (http://localhost:65386/dart_sdk.js:62759:21)
at Object.next (https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js:1:320206)
at next (https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js:1:303665)
at https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js:1:244953
[2021-11-02T07:24:18.188Z] @firebase/firestore:
我正在一起制作网络和应用程序,该应用程序运行良好。我能知道这个问题吗?
谢谢你。
解决方案
推荐阅读
- c++ - Address Sanitizier 调用 OOM-killer
- javascript - 未找到模块:错误:在 Vue 和 Laravel 中
- javascript - 用于 NodeJS 的轻量级 AWS S3 客户端
- azure - 使用scala检查parquet文件是否存在
- angular - 构建门户网站应用架构
- sql - 具有相同变量的多个插入语句
- azure-ad-b2c - 编排步骤前提条件适用于 OR 逻辑而不适用于 AND
- sharepoint - sharepoint 中的长 SQL 查询
- testing - Pact.net 合同协议文件未在指定目录中创建,尽管测试通过
- flutter - 如何在浏览器本地存储 Flutter Web 应用程序中保存对象列表