我从服务器收到一串文字。目标是将单词动态地组合成单个句子。现在发生的情况如下,附加值,但每当添加新字母时,整个字符串就会重复。
eg: hi , how are you ? // stream of words or letters
Expected : hi, how are you?
我得到的如下
hi
hi,
hi, how
hi, how are
hi, how are you
hi, how are you ?
我的目标是动态地将其添加到字符串中,以便我可以将其传递给 ui 进行渲染
StringBuffer buffer = StringBuffer();
String newPart = '';
subscription = _channel.stream.listen(
(message) {
final actualMessage = message['message']; // from where i get data or values
if (actualMessage != 'END') {
newPart += actualMessage;
buffer.clear();
buffer.write(newPart);
debugPrint(buffer.toString().trim());
add(UiEvent.response(
message: buffer.toString().trim()));
}
},
onError: (error) {
debugPrint("stream Error $error");
},
);
我需要动态追加数据并将其发送到用户界面。我缺少什么?我怎样才能正确地实现这个?
我想下面的代码负责在 UI 上显示文本:
add(UiEvent.response(message: buffer.toString().trim()));
“END”作为消息表示字符串的结束。
然后将您的代码更改为以下解决方案应该适合您。
String messageToDisplay = '';
subscription = _channel.stream.listen(
(message) {
final actualMessage = message['message']; // from where i get data or values
if (actualMessage != 'END') {
messageToDisplay += ' $actualMessage';
} else {
// debug
debugPrint(messageToDisplay.trim());
// display messageToDisplay in ui
add(UiEvent.response(message: messageToDisplay.trim()));
// then clear messageToDisplay to make
// it ready for the next set of strings
messageToDisplay = '';
}
},
onError: (error) {
debugPrint("stream Error $error");
},
);