ในโผมีสิ่งที่เทียบเท่ากับทั่วไป:
enumerate(List) -> Iterator((index, value) => f)
or
List.enumerate() -> Iterator((index, value) => f)
or
List.map() -> Iterator((index, value) => f)
ดูเหมือนว่านี่จะเป็นวิธีที่ง่ายที่สุด แต่ก็ยังแปลกที่ฟังก์ชันนี้จะไม่มีอยู่จริง
Iterable<int>.generate(list.length).forEach( (index) => {
newList.add(list[index], index)
});
แก้ไข:
ขอบคุณ @ hemanth-raj ที่ฉันสามารถหาวิธีแก้ปัญหาที่ฉันกำลังมองหา ฉันจะใส่ไว้ตรงนี้สำหรับใครก็ตามที่ต้องการทำอะไรคล้าย ๆ กัน
List<Widget> _buildWidgets(List<Object> list) {
return list
.asMap()
.map((index, value) =>
MapEntry(index, _buildWidget(index, value)))
.values
.toList();
}
หรือคุณสามารถสร้างฟังก์ชันเครื่องกำเนิดไฟฟ้าแบบซิงโครนัสเพื่อส่งคืนค่าที่ทำซ้ำได้
Iterable<MapEntry<int, T>> enumerate<T>(Iterable<T> items) sync* {
int index = 0;
for (T item in items) {
yield MapEntry(index, item);
index = index + 1;
}
}
//and use it like this.
var list = enumerate([0,1,3]).map((entry) => Text("index: ${entry.key}, value: ${entry.value}"));
Map#forEach
เหรอ? เป็นสิ่งที่คุณต้องการหรือไม่?