gpt4 book ai didi

firebase - Firebase数据库未在Flutter应用中更新

转载 作者:行者123 更新时间:2023-12-03 03:25:15 26 4
gpt4 key购买 nike

我正在开发一个聊天应用程序。我已经完成了安装Firebase的所有过程,并且我的应用程序运行正常。但是,当我连接Firebase数据库并尝试将消息存储到数据库中时。数据库不会使用新文档(消息和用户电子邮件)进行更新。

这是我的代码-

这是我的Firebase数据库页面的样子
enter image description here

这就是我的应用程序的样子
enter image description here

import 'package:flutter/material.dart';
import 'package:flash_chat/constants.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class ChatScreen extends StatefulWidget {
static const String id = 'chat_screen';

@override _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
final _firestore = Firestore.instance;
String messageText;
final _auth = FirebaseAuth.instance;
FirebaseUser loggedinUser;

void getCurrentUser() async {
try {
final user = await _auth.currentUser();
if (user != null) {
loggedinUser = user;
print(user.email);
}
} catch (e) {
print(e);
}
}

@override Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: null,
actions: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () {
_auth.signOut();
Navigator.pop(context);
//Implement logout functionality
}),
],
title: Text('⚡️Chat'),
backgroundColor: Colors.lightBlueAccent,
),
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(
decoration: kMessageContainerDecoration,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: TextField(
onChanged: (value) {
messageText = value;
//Do something with the user input.
},
decoration: kMessageTextFieldDecoration,
),
),
FlatButton(
onPressed: () {
_firestore.collection('messages').add({
'sender': loggedinUser.email,
'text': messageText,
});
//Implement send functionality.
},
child: Text(
'Send',
style: kSendButtonTextStyle,
),
),
],
),
),
],
),
),
);
}
}

**

最佳答案

似乎问题是您正在尝试使用null值添加数据,这就是为什么看不到任何更改的原因。

看起来像null的值是loggedinUser.emailmessageText,检查用户是否有email,对于messageText,在onChanged中,您应该在messageText = value;内执行setState(),但是除了这样做,您可以在controller上添加TextField,然后使用controller.text

关于firebase - Firebase数据库未在Flutter应用中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com