lineTerminator property
Line ending appended by writeln
, and replacing "\n"
in some methods.
Must be one of the values "\n"
(the default) or "\r\n"
.
When set to "\r\n"
, the methods write
, writeln
, writeAll
and
writeCharCode
will convert embedded newlines, "\n"
, in their
arguments to "\r\n"
. If their arguments already contain "\r\n"
sequences, then these sequences will be not be converted. This is true
even if the sequence is generated across different method calls.
If lineTerminator
is "\n"
then the written strings are not modified.
Setting lineTerminator
to Platform.lineTerminator will result in
"write" methods outputting the line endings for the platform:
stdout.lineTerminator = Platform.lineTerminator;
stderr.lineTerminator = Platform.lineTerminator;
The value of lineTerminator
has no effect on byte-oriented methods
such as add
.
The value of lineTerminator
does not effect the output of the print
function.
Throws ArgumentError if set to a value other than "\n"
or "\r\n"
.
Implementation
//
/// Setting `lineTerminator` to [Platform.lineTerminator] will result in
/// "write" methods outputting the line endings for the platform:
///
/// ```dart
/// stdout.lineTerminator = Platform.lineTerminator;
/// stderr.lineTerminator = Platform.lineTerminator;
/// ```
///
/// The value of `lineTerminator` has no effect on byte-oriented methods
/// such as [add].
///
/// The value of `lineTerminator` does not effect the output of the [print]
/// function.
///
/// Throws [ArgumentError] if set to a value other than `"\n"` or `"\r\n"`.
String get lineTerminator => _windowsLineTerminator ? "\r\n" : "\n";
Implementation
set lineTerminator(String lineTerminator) {
if (lineTerminator == "\r\n") {
assert(!_lastWrittenCharIsCR || _windowsLineTerminator);
_windowsLineTerminator = true;
} else if (lineTerminator == "\n") {
_windowsLineTerminator = false;
_lastWrittenCharIsCR = false;
} else {
throw ArgumentError.value(lineTerminator, "lineTerminator",
r'invalid line terminator, must be one of "\r" or "\r\n"');
}
}