DialogueManager class

Central service for the Narrative/Dialogue System.

Manages DialogueGraph registration, DialogueRunner lifecycle, global variables, localization, conditions, and commands.

Typical setup

final narrative = DialogueManager();

// Load localized strings
await narrative.localizer.loadLocale(const Locale('en'));

// Load dialogue assets
await narrative.loadGraph('assets/dialogue/innkeeper.yarn');

// Register custom conditions
narrative.conditions.register('playerHasKey', (vars) => player.hasKey);

// Register custom commands
narrative.commands.register('fade_out', (ctx) async => camera.fadeOut());

// Create a runner and start dialogue
final runner = narrative.createRunner('innkeeper');
runner.signals.currentLine.addListener(() { ... });
await runner.start('Start');

Constructors

DialogueManager({DialogueLocalizer? localizer, DialogueVariableStore? globalVariables})

Properties

activeGraphId → Signal<String?>
Emits the DialogueGraph.id of the currently active graph, or null.
final
commands DialogueCommandRegistry
Registry for custom <<commandName args>> handlers.
latefinal
conditions DialogueConditionRegistry
Registry for named Dart condition predicates ([conditionName] in Yarn).
latefinal
globalVariables DialogueVariableStore
Global variable store shared across all runners created by this manager. Persists between individual dialogue sessions.
final
hashCode int
The hash code for this object.
no setterinherited
isAnyDialogueActive → Signal<bool>
true when at least one runner created by this manager is active.
final
localizer DialogueLocalizer
Localizer used by all runners. Load locales early in your boot sequence.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

createRunner(String graphId, {NarrativeSignals? signals}) DialogueRunner
Creates a new DialogueRunner for the graph registered under graphId.
createRunnerForEntity(int entityId, String graphId, {NarrativeSignals? signals}) DialogueRunner
Creates a runner bound to an ECS entity (keyed by entityId).
dispose() Future<void>
Stops all active runners and clears all state.
disposeRunner(DialogueRunner runner) Future<void>
Stops and removes runner from internal tracking.
disposeRunnerForEntity(int entityId) Future<void>
Removes and disposes the runner for entityId.
getGraph(String id) DialogueGraph?
Returns the registered graph for id, or null if not found.
getRunnerForEntity(int entityId) DialogueRunner?
Returns the runner bound to entityId, or null.
hasGraph(String id) bool
true if a graph with id has been registered.
loadGraph(String assetPath, {String? id, AssetBundle? bundle}) Future<DialogueGraph>
Loads a .yarn asset from assetPath and registers it.
mergeGraph(DialogueGraph graph) → void
Merges graph into an existing graph by the same id, or registers it.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
parseAndRegister(String yarnSource, {required String id}) DialogueGraph
Parses a Yarn Spinner source string and registers the resulting graph.
registerGraph(DialogueGraph graph) → void
Manually registers a graph (e.g. built programmatically or from tests).
startDialogue({required String graphId, String startNode = 'Start'}) Future<DialogueRunner>
Convenience: creates a runner, starts dialogue from startNode, and returns the runner.
toString() String
A string representation of this object.
inherited

Operators

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