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

标签 firebase flutter dart google-cloud-firestore

我正在开发一个聊天应用程序。我已经完成了安装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/

相关文章:

dart - 如何在 dart 的 angular2-beta.20 中为路由器使用 HashLocationStrategy?

swift - Firebase 推送通知在 iOS 13 上不起作用

firebase - 如何在firebase云函数中从通配符获取数据

Flutter - 即使点击后退按钮,如何确保开关打开?

flutter - 类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型转换中类型 'Map<String, String>' 的子类型

flutter - 将字符串传递给 Flutter 中的类?

flutter - 方法 'findAncestorStateOfType' 在 flutter dart 中被 null 调用

java - 如何将 Firebase 电话身份验证与电子邮件/密码身份验证相关联?

java - com.google.firebase.database.DatabaseException : Can't convert object of type java. lang.String 类型错误

Flutter 在底页顶部显示 Snackbar