我是 Dart 的初学者,正在尝试编写一个函数,逐个字母地打印字符串,每个字母之间有延迟。它在大多数情况下都有效,但是,由于
Future.delayed
,它在使用此功能超过 1 次时给我带来了一些问题。
这是我的代码:
void printFancy(data) {
List sample = data.split("");
print(data);
print(sample);
sample.asMap().forEach((index, element) {
Future.delayed(Duration(milliseconds: index*50), () {
stdout.write(element.toString());
});
});
stdout.write("\n");
}
您的代码同时打印输出而不等待其完成,导致重叠输出
使用具有等待延迟的异步执行
Future<void> printFancy(String data) async {
List<String> sample = data.split("");
for (var element in sample) {
await Future.delayed(Duration(milliseconds: 50));
stdout.write(element);
}
stdout.write('\n');
}
void main() async {
await printFancy("Hello");
await printFancy("World");
}