如何在 Dart 中逐个字母地书写?

问题描述 投票:0回答:1

我是 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");

}
flutter dart logic
1个回答
0
投票

您的代码同时打印输出而不等待其完成,导致重叠输出

使用具有等待延迟的异步执行

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");
 }
© www.soinside.com 2019 - 2024. All rights reserved.