Remember that at the call site Dart doesn't know which object the method will be invoked upon and therefor can't determine if there are optional parameters missing or not. That being said, after types seen at the call site are collected it does seem like a reasonable optimization that might be able to be done. I don't know enough to speak with authority though.