QuestViewModel class

One caller-supplied quest row — label/progress/target/claimed are already resolved by the caller (typically read straight off DailyQuestService.progressOf/targetOf/isClaimed for id); this widget never talks to that service directly, same "pure/data-driven, caller owns the source of truth" convention as LeaderboardEntry.

Constructors

QuestViewModel({required String id, required String label, required int progress, required int target, required bool claimed, bool claiming = false})
const

Properties

claimed → bool
final
claiming → bool
ENH-70: forwarded to this quest's own Claim CommonButton.loading — spinner + blocks double-tap while a caller-owned async claim (e.g. a server-validated claim) for THIS quest is in flight. false (default) unchanged from before this existed. Only the quest with claiming: true shows a spinner; every other quest in the same QuestBoardPanel is unaffected, since this lives on each quest's own view model rather than a single flag on the whole panel.
final
hashCode → int
The hash code for this object.
no setterinherited
id → String
final
isClaimable → bool
Completed but not yet claimed — the only state in which the row's Claim button is enabled.
no setter
isCompleted → bool
no setter
label → String
final
progress → int
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
target → int
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited