steer method
Steers new themes by intent (engine v4) and moves to the first of
them, centred on the intent (forward history is dropped, as with
jumpTo; back returns to where the user was). Steered steps have no
heroes and draw from steeredFamilies. A null or empty intent stops
steering without moving. Works while locked (an explicit apply).
Implementation
FeedEntry steer(ThemeIntent? intent) {
if (intent == null || intent.isEmpty) {
if (_intent != null) {
_intent = null;
_notify();
}
return current;
}
_intent = intent;
_intentStep = _steps;
_history
..removeRange(_cursor + 1, _history.length)
..add(entryAt(_steps));
_steps++;
_cursor++;
_trim();
_notify();
return current;
}