Flutter开发中如何去除Dart代码输出的自动换行?
Dart 控制台输出去除自动换行解决方案
问题根因
- 现有代码的换行是因为
print()方法默认会在每次调用结束后追加换行符,你在循环内每次打印单个字符,自然会每行输出一个数字 - 原有代码中
code.toString().split(",")的操作属于冗余逻辑,不需要将列表转字符串再拆分获取单个元素
解决实现
方案1:先拼接完整字符串再一次性输出(更简洁,无需额外导包)
直接将排序后的数字列表元素逐一转字符串后拼接,再套上[]统一打印即可,代码如下:
import 'dart:math'; void main(){ List<int> code = []; while (true) { var Roomcode = Random().nextInt(10); code.add(Roomcode); if (code.length == 6) break; } code.sort(); // 拼接所有数字为连续字符串 String result = code.map((num) => num.toString()).join(); // 一次性输出 print('[$result]'); setState(() {}); } void setState(Null Function() param0) { }
运行后输出格式即为你需要的[122377]样式。
方案2:循环内不换行输出(适用于需要逐字符输出的场景)
如果需要保留循环逐次输出的逻辑,可使用dart:io库的stdout.write()方法,该方法不会自动追加换行符:
import 'dart:math'; import 'dart:io'; void main(){ List<int> code = []; while (true) { var Roomcode = Random().nextInt(10); code.add(Roomcode); if (code.length == 6) break; } code.sort(); stdout.write('['); for(int i = 0; i < 6; i++){ stdout.write(code[i].toString()); } stdout.writeln(']'); // 最后输出一次换行结束当前行 setState(() {}); } void setState(Null Function() param0) { }
内容的提问来源于stack exchange,提问作者Throw flutter
相关产品推荐
相关产品推荐

