Flatter应用程序中未更新Firebase数据库

Flatter应用程序中未更新Firebase数据库,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在开发一个聊天应用程序。我已经完成了安装firebase的所有过程,我的应用程序运行良好。但是当我连接firebase数据库并试图将消息存储到数据库中时。数据库不会使用新文档(消息和用户电子邮件)更新 这是我的密码- 这就是我的firebase数据库页面的外观 这就是我的应用程序的样子 导入“包装:颤振/材料.省道”; 导入“package:flash_chat/constants.dart”; 导入“包:firebase_auth/firebase_auth.dart”; 导入“包:c

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

这是我的密码-

这就是我的firebase数据库页面的外观

这就是我的应用程序的样子

导入“包装:颤振/材料.省道”;
导入“package:flash_chat/constants.dart”;
导入“包:firebase_auth/firebase_auth.dart”;
导入“包:cloud_firestore/cloud_firestore.dart”;
类ChatScreen扩展StatefulWidget{
静态常量字符串id='chat_screen';
@覆盖_chatScreenStatecreateState()=>_ChatScreenState();
}
类_ChatScreenState扩展状态{
final _firestore=firestore.instance;
字符串消息文本;
final _auth=FirebaseAuth.instance;
FirebaseUser日志用户;
void getCurrentUser()异步{
试一试{
最终用户=等待_auth.currentUser();
如果(用户!=null){
loggedinUser=用户;
打印(用户邮箱);
}
}捕获(e){
印刷品(e);
}
}
@覆盖小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
前导:空,
行动:[
图标按钮(
图标:图标(Icons.close),
已按下:(){
_auth.signOut();
Navigator.pop(上下文);
//实现注销功能
}),
],
标题:文本('⚡️聊天室),,
背景颜色:Colors.lightBlueAccent,
),
正文:安全区(
子:列(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
容器(
装饰:kMessageContainerDecoration,
孩子:排(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
扩大(
孩子:TextField(
一旦更改:(值){
messageText=值;
//对用户输入执行一些操作。
},
装饰:KMessageExtField装饰,
),
),
扁平按钮(
已按下:(){
_firestore.collection('messages')。添加({
“发件人”:loggedinUser.email,
“文本”:messageText,
});
//实现发送功能。
},
子:文本(
“发送”,
样式:ksendButtonExtStyle,
),
),
],
),
),
],
),
),
);
}
}

**

问题似乎是您试图添加带有
null
值的数据,这就是为什么您看不到任何更改


似乎为
null
的值是
loggedinUser.email
messageText
,检查用户是否有
email
,对于
messageText
,在
onChanged
中,您应该执行
messageText=value
setState()
中,但您可以将
控制器添加到
TextField
中,然后使用
controller。text

您有足够的权限吗?您是否看到任何错误消息?是的,我拥有所有权限,但没有看到任何错误图像。
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,
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}