Dart multi-key sort with nulls last

Dart
typedef Row = ({String name, int? score, int age});

int nullsLast(dynamic a, dynamic b) {
  if (a == null && b == null) return 0;
  if (a == null) return 1;
  if (b == null) return -1;
  return (a as Comparable<dynamic>).compareTo(b as Comparable<dynamic>);
}

List<Row> sortRows(List<Row> rows) {
  final copy = [...rows];
  copy.sort((a, b) {
    final byScore = nullsLast(a.score, b.score);
    if (byScore != 0) return byScore;
    final byAge = nullsLast(a.age, b.age);
    if (byAge != 0) return byAge;
    return a.name.compareTo(b.name);
  });
  return copy;
}