Named arguments are meant to increase readability. For example I’ve just used one as such
public void MarkAsDone(bool skipped) {}
Now by invoking the method without the name we have an ambiguity
MarkAsDone(true); //does true mean that it is successfully done?
Which can be resolved by clarifying with a name
MarkAsDone(skipped: true);
I think using the named parameter makes the client code way less ambiguous.
Apart from that they can be used to uniquely identify an optional parameter when there’s more than one with the same type
MarkAsDone(int first, int second=0, int third=0) {}
///
MarkAsDone(1, third: 3);