FirestoreChatViewModel class
Drives the Firestore-backed chat page: loading messages, listening for new ones, and sending text or image messages.
- Inheritance
-
- Object
- ChangeNotifier
- FirestoreChatViewModel
Constructors
- FirestoreChatViewModel(BuildContext context, ChatEntity chatEntity)
-
Creates a view model for
chatEntity, usingcontextfor navigation and locale-aware formatting.
Properties
- anyObjectsBusy → bool
-
no setterinherited
- chatEntity ↔ ChatEntity
-
The conversation this view model manages.
getter/setter pair
-
chatRef
↔ CollectionReference<
Object?> ? -
The Firestore collection reference for the conversation's messages.
getter/setter pair
- chatStreamListener ↔ StreamSubscription?
-
The active subscription listening for new incoming messages.
getter/setter pair
- context ↔ BuildContext
-
The build context the chat page was created with.
getter/setter pair
- disposed ↔ bool
-
getter/setter pairinherited
- firebaseStorage → FirebaseStorage
-
The Firebase Storage instance used to upload image attachments.
final
- firestore ↔ FirebaseFirestore
-
The Firestore instance used to read and write chat messages.
getter/setter pair
- hasError → bool
-
Returns the error existence status of the ViewModel
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
- initialised → bool
-
no setterinherited
- isBusy → bool
-
Returns the busy status of the ViewModel
no setterinherited
-
messageKeys
↔ List<
String> -
Firestore document ids corresponding to messages, in the same order.
getter/setter pair
-
messages
↔ List<
ChatMessage> -
The messages currently loaded for the conversation, newest first.
getter/setter pair
- modelError → dynamic
-
Returns the error status of the ViewModel
no setterinherited
- onModelReadyCalled → bool
-
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
busy(
Object? object) → bool -
Returns the busy status for an object if it exists. Returns false if not present
inherited
-
clearErrors(
) → void -
Clears all the errors
inherited
-
dispose(
) → void -
Discards any resources used by the object.
inherited
-
error(
Object object) → dynamic -
inherited
-
hasErrorForKey(
Object key) → bool -
Returns a boolean that indicates if the ViewModel has an error for the key
inherited
-
initialise(
) → void - Loads existing messages and starts listening for new ones.
-
listenToNewMessages(
) → Future< void> - Subscribes to real-time updates and prepends newly received messages to messages.
-
loadAllMessages(
) → Future< void> - Fetches all existing messages for the conversation from Firestore.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyListeners(
) → void -
Call all the registered listeners.
inherited
-
onCameraMedia(
) → Future< void> - Opens the camera for the user to capture an image to send.
-
onFutureError(
dynamic error, Object? key) → void -
Function that is called when a future throws an error
inherited
-
onSelectMedia(
) → Future< void> - Opens the gallery for the user to pick an image to send.
-
rebuildUi(
) → void -
Calls the builder function with this updated viewmodel
inherited
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
runBusyFuture<
T> (Future< T> busyFuture, {Object? busyObject, bool throwException = false}) → Future<T> -
Sets the ViewModel to busy, runs the future and then sets it to not busy when complete.
inherited
-
runErrorFuture<
T> (Future< T> future, {Object? key, bool throwException = false}) → Future<T> -
inherited
-
sendMessage(
ChatMessage m) → void -
Persists
mto Firestore and notifies ChatEntity.onMessageSent. -
setBusy(
bool value) → void -
Marks the ViewModel as busy and calls notify listeners
inherited
-
setBusyForObject(
Object? object, bool value) → void -
Sets the busy state for the object equal to the value passed in and notifies Listeners
If you're using a primitive type the value SHOULD NOT BE CHANGED, since Hashcode uses == value
inherited
-
setError(
dynamic error) → void -
Sets the error for the ViewModel
inherited
-
setErrorForModelOrObject(
dynamic value, {Object? key}) → void -
inherited
-
setErrorForObject(
Object object, dynamic value) → void -
Sets the error state for the object equal to the value passed in and notifies Listeners
If you're using a primitive type the value SHOULD NOT BE CHANGED, since Hashcode uses == value
inherited
-
setInitialised(
bool value) → void -
Sets the initialised value for the ViewModel to true. This is called after
the first initialise special ViewModel call
inherited
-
setOnModelReadyCalled(
bool value) → void -
Sets the onModelReadyCalled value to true. This is called after this first onModelReady call
inherited
-
skeletonData<
T> ({required T? realData, required T busyData, Object? busyKey}) → T -
returns real data passed if neither the model is busy nor the object passed is busy
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
uploadPhoteChat(
XFile selectedXFile) → Future< void> -
Uploads
selectedXFileto Firebase Storage and sends it as an image message.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited