Just to clarify:

    List<int> get selection => _selection.toList();

instead of:

    List<int> get selection {
      return _selection.toList();
    }

And I prefer the method shortcut notation when it fits one one line, but there are cases (generally I suppose depending on surrounding code) where I don't use it.