Я не уверен, можно ли это сделать более эффективным способом, но вы можете сделать что-то вроде этого. Я предполагаю, что два списка, которые вы хотите отсортировать, имеют одинаковую длину.
class Something {
final String name;
Something(this.name);
@override
String toString() => name;
}
class Pair<T1, T2> {
final T1 a;
final T2 b;
Pair(this.a, this.b);
}
void main() {
final a = [Something('A'), Something('E'), Something('B'), Something('C')];
final b = [1, 5, 2, 3];
final tempList =
List.generate(a.length, (i) => Pair(a[i], b[i]), growable: false)
..sort((p1, p2) => p1.b.compareTo(p2.b));
for (var i = 0; i < tempList.length; i++) {
final pair = tempList[i];
a[i] = pair.a;
b[i] = pair.b;
}
print(a); // [A, B, C, E]
print(b); // [1, 2, 3, 5]
}