Для передачи сообщений клиентам в реальном времени используйте какой-нибудь Socket.IO.
В доках даже пример с
чатом есть.
Собственно, библиотеки как для flutter, так и для nodejs есть. Полученные сообщения складывайте в БД, при подключении клиента к чату можно отдавать сообщения из БД или хранить в памати демона чата N последних сообщений и отдавать их, а БД лишь для истории.