how to build a chat application using flutter and firestore

Hi,
I’m trying to build a chat application using flutter and firestore,

the problem here is that when i want to send a message or chat with a user the message sent is empty

Here is my code for message.dart where i have two function saveMessage and sendPhoto where i should implement how can i send the message.

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:models/message.dart';

// ignore: must_be_immutable

class MessageChat extends StatefulWidget {

MessageChat();

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

class _MessageState extends State<MessageChat> {

 List<String> messageList = [
   "hello",
   "how are you?",
     ];
     TextEditingController _controllerMessage = TextEditingController();
     String _idLoggedUser;

    _sendMessage(){
    String textMessage = _controllerMessage.text;
     if(textMessage.isNotEmpty){
      Message message = Message();
      message.idUser = _idLoggedUser;
      message.message = textMessage;
      message.urlImage = "";
      message.typeM = "text";

     _saveMessage();
       }
        }

    _saveMessage(){

    }


    _sendPhoto(){

    }

     _recoverUserData() async {
     FirebaseAuth auth = FirebaseAuth.instance;
     FirebaseUser loggedUser = await auth.currentUser();
     _idLoggedUser = loggedUser.uid;

    Firestore db = Firestore.instance;
    // ignore: unused_local_variable
     DocumentSnapshot snapshot = await db.collection("user")
  .document(_idLoggedUser)
   .get();

   }

   @override
   void initState() {
  super.initState();
       _recoverUserData();
        }


    @override
      Widget build(BuildContext context) {

    var boxMessage = Container(
     padding: EdgeInsets.all(9),
    child: Row(
     children: <Widget>[
    Expanded(
     child: Padding(
      padding: EdgeInsets.only(right: 10),
      child: TextField(
        controller: _controllerMessage,
        autofocus: true,
        keyboardType: TextInputType.text,
        style: TextStyle(fontSize: 18),
        decoration: InputDecoration(
          contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 2),
          hintText: "Send a message...",
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10)
          ),
          prefixIcon: IconButton(
              icon: Icon(
                Icons.camera_alt,
                color: Theme.of(context).primaryColor,
              ),
              onPressed: _sendPhoto
          )
        ),
      ),
    ),
  ),
  FloatingActionButton(
    backgroundColor: Colors.white,
    mini: true,
    child: Icon(
        Icons.arrow_forward_ios,
        color: Theme.of(context).primaryColor,
    ),
    onPressed: _sendMessage,
  )
],
),
);

var listView = Expanded(
child: ListView.builder(
  itemCount: messageList.length,
  itemBuilder: (context, index){

    double widthContainer = MediaQuery.of(context).size.width * 0.7;
    Alignment alignment = Alignment.centerRight;
    Color color = Theme.of(context).primaryColor;

    if(index % 2 == 0){
      alignment = Alignment.centerLeft;
      color = Theme.of(context).accentColor;

    }

    return Align(
      alignment: alignment,
      child: Padding(
        padding: EdgeInsets.all(6),
        child: Container(
          width: widthContainer,
          padding: EdgeInsets.all(15),
          decoration: BoxDecoration(
            color: color,
            borderRadius: BorderRadius.all(Radius.circular(6))
          ),
          child: Text(
            messageList[index],
            style: TextStyle(
              color: Colors.white,
              fontSize: 18
            ),
          ),
        ),
      ),
    );
    }
    ),
  );


 return Scaffold(
 appBar: AppBar(
 centerTitle: true,
 title: Text("CHAT"),
 ),
 body: SafeArea(
  child: Container(
    padding: EdgeInsets.all(7),
    child: Column(
      children: <Widget>[
        listView,
        boxMessage
      ],
    ),
  )
  ),
);
 }
 }