This is legal as per the type signature, but will throw a runtime exception if the nullable value is null. To make this exception more explicit, the value must be null-checked before completing the completer with the value.
The analyzer will soon enforce such checks. See dart-lang/sdk#53253.