steer method

FeedEntry steer(
  1. ThemeIntent? intent
)

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;
}