-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
area-core-librarySDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries.SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries.core-alibrary-converttype-documentationA request to add or improve documentationA request to add or improve documentation
Description
Please see StringConversionSink.asStringSink() documentation at https://api.dartlang.org/stable/1.22.1/dart-convert/StringConversionSink/asStringSink.html
ClosableStringSink asStringSink()
Returns this as a ClosableStringSink.If used, this method must be the first and only call to this. It invalidates this. All further operations must be performed on the result.
Now look at the following code.
import "dart:convert";
main() {
var outSink = new ByteConversionSink.withCallback((accumulated) {
print(accumulated);
});
StringConversionSink inSink = UTF8.encoder.startChunkedConversion(outSink);
inSink.add("1");
ClosableStringSink css = inSink.asStringSink();
css.write("2");
inSink.add("3");
css.close(); // prints [49, 50, 51]. It's encoded string "123"
inSink.add("4");
inSink.close(); // prints [49, 50, 51, 52]. It's encoded string "1234"
inSink.add("5");
inSink.close(); // prints [49, 50, 51, 52, 53]. It's encoded string "12345"
}I don't see that asStringSink() invalidates anything.
The same is true for StringConversionSink.asUtf8Sink()
import "dart:convert";
main() {
var outSink = new ByteConversionSink.withCallback((accumulated) {
print(accumulated);
});
StringConversionSink inSink = UTF8.encoder.startChunkedConversion(outSink);
inSink.add("1");
ByteConversionSink bcs = inSink.asUtf8Sink(false);
bcs.add([50]); // [50] is utf-8 encoding of 2
inSink.add("3");
bcs.close(); // prints [49, 50, 51]. It's encoded string "123"
inSink.add("4");
inSink.close(); // prints [49, 50, 51, 52]. It's encoded string "1234"
inSink.add("5");
inSink.close(); // prints [49, 50, 51, 52, 53]. It's encoded string "12345"
}Metadata
Metadata
Assignees
Labels
area-core-librarySDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries.SDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries.core-alibrary-converttype-documentationA request to add or improve documentationA request to add or improve documentation