我正在做一个颤振的Web项目,我正在尝试使用剪贴板中的数据。
首先我的代码:
code = {}; // Earlier defined as static Map<String, String> code = {"": ""};
ClipboardData? data = await Clipboard.getData("plain");
if (data == null || data.text == null) {
return;
}
print("Data:n${data.text}");
print("Test:" + "T 1n S 00nE 01".split("n").toString()); // Unnecessary, but I wanted to test if I'm sane.
List<String> entries = data.text!.split("n");
print(entries.length);
print("Entries: ");
print(entries);
entries.forEach((element) {
List<String> split = element.split(" ");
code[split[0]] = split[1];
print("Result: $code");
setState(() {});
它用于函数,但我认为其余的既没有用也没有必要。
我的问题:
变量entries
返回非常奇怪的值。 将此输入复制到剪贴板(这是从网站上的其他地方复制的):
T 1
S 00
E 01
函数的确切输出(带注释)为:
Data: // This first part is completely understandable and right.
T 1
S 00
E 01
Test:[T 1, S 00, E 01] // This makes sense too.
3
Entries: // Now it starts to behave weirdly.
, E 01] // Where is the opening bracket and the first value?
, E: 01} // What's this print it ends like a map, doesn't start properly and what line is printing it?
// If it's the last line, where is the "Result: " part?
预期产出:
Data:
T 1
S 00
E 01
Test:[T 1, S 00, E 01]
3
Entries:
[T 1, S 00 , E 01]
{E: 1, S: 00, E: 01}
我尝试过的东西:
- 我将
Clipboard.getData("plain")
参数更改为"text"
和Clipboard.kTextPlain
,完全没有影响。 - 我尝试了其他输入,没有帮助。最后一个元素始终保留,其他一切都丢失了。
- 我测试了它是否是打印错误,不是变量本身是问题所在。
- 我尝试更改从中复制输入的源,但没有影响。
- 我尝试先用其他东西替换换行符,然后对这些字符进行拆分。
- 我尝试了其他浏览器。
- 我将颤振通道从
master
更改为stable
。 - 我升级了颤振。(至
Channel master, 2.6.0-12.0.pre.396
) - 我跑
flutter doctor -v
一切都是绿色的,很好。
以下是我认为可能正在发生的事情: 当您按键盘上的 Enter 键时,这就是添加到字符串中的内容nr
第一个n
表示转到下一行,r
表示将光标移动到行首,因此当您删除n
时,您会留下一些r
当您希望打印列表时移动到行首,并生成先前编写的代码。
请注意,这不一定是错误的原因,大多数控制台都知道忽略回车 (r
)。这通常不会成为问题,但是正如您所说,这是一个非常奇怪的错误,我想不出任何方式是由任何不是回车的东西引起的。
如果这确实是此问题的原因,则解决方案应该非常简单:
String newData = data.text!.replaceAll('r', '');
List<String> entries = newData.split('n');