Currently, supplying empty string as the constructor argument results in called a named constructor whose name is empty, e.g.: Foo.(). That's not valid Dart, therefore the only interpretation of empty string should be to call the default constructor. null should be either disallowed or have the same behavior.