實際上,我正在嘗試從第 19 個索引回傳一個串列,但這對我不起作用。此串列分為子串列。我想從第 19 個索引而不是從 0 開始拆分它。
這是我的代碼:
static Future<List> local() async {
File textAsset = File('/storage/emulated/0/RPSApp/assets/bluetooth.txt');
final text = await textAsset.readAsString();
final bytes =
text.split(',').map((s) => s.trim()).map((s) => int.parse(s)).toList();
int chunkSize = 19;
List<int> padTo(List<int> input, int count) {
return [...input, ...List.filled(count - input.length, 255)];
}
List<int> padToChunksize(List<int> input) => padTo(input, chunkSize);
List<List<int>> items;
items = bytes.slices(chunkSize).map(padToChunksize).toList();
for (int i = 19; i < bytes.length; i ) {
return items;
}
return items;
}
此代碼用于一一顯示子串列:
final chun = await Utils.local();
await Future.forEach(chun, (ch) async {
await Future.delayed(const Duration(seconds: 4));
await c.write(chun, withoutResponse: true);
await c.read();
await Future.wait(getValue());
}
})
我不知道這段代碼有什么問題以及為什么它從索引 0 回傳串列。
uj5u.com熱心網友回復:
老實說,很難理解您的代碼。因為它混合了 1 個功能。
它從索引 0 回傳,因為:
items = bytes.slices(chunkSize).map(padToChunksize).toList();
然后你保留退貨。這是回傳所有專案。您必須根據需要創建新串列并剪切索引。
解決方案:
根據您在評論部分提供的串列錯誤回答:
List data = [144, 9, 146, 8, 191, 0, 32, 0, 240, 84, 130, 16, 70, 79, 240, 0, 11, 170, 0, 0, 0, 242];
// method 1 ( recomended)
final newList = data.skip(19);
print(newList); // result: (0, 0, 242)
// method 2
final newlist2 = temp.getRange(19,data.length);
print(newlist2); // result: (0, 0, 242)
兩種方法都將從索引 19 回傳串列。選擇您喜歡使用哪種方法。我會推薦使用跳過,因為如果串列長度小于 19 它不會拋出錯誤
uj5u.com熱心網友回復:
如果您查看下面的代碼片段,您將回傳完整的輸入串列和另一組填充 255 的串列,這是錯誤的。
List<int> padTo(List<int> input, int count) {
return [...input, ...List.filled(count - input.length, 255)];
}
如果要從索引 19 回傳串列,則需要更正代碼片段,如下所示。
List<int> padTo(List<int> input, int count) {
return [...input.skip(19), ...List.filled(count - input.length, 255)];
}
這將跳過輸入串列中的前 19 個元素,但您必須了解長度的輸入大于 19,否則將回傳一個空串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523336.html
標籤:扑列表镖分裂子列表
