Flutter/Dat-尝试在值映射上迭代//需要语法帮助



我是一个自学编码的初学者,在一项自行设置的任务中失败了。任务的目的最终是找出语法。。。但我现在花了几个小时。所以…请帮忙!警告:我完全弄糊涂了。。。所以,不要指望我的尝试是美丽的。

我想在这个地图上使用迭代:

const marginsCard = [
{
'ID': 0,
'margins': [
{'marginLeft': 0},
{'marginRight': 5},
{'marginBottom': 0},
{'marginTop': 20},
],
},
{
'ID': 1,
'margins': [
{'marginLeft': 5},
{'marginRight': 0},
{'marginBottom': 0},
{'marginTop': 20,},
],
},
{
'ID': 2,
'margins': [
{'marginLeft': 5},
{'marginRight': 0},
{'marginBottom': 0},
{'marginTop': 20,},
],
},
];

目标是

  1. 迭代'ID'
  2. 将边距的值移交给构造函数方法
  3. 交回指定边距的卡片
  4. 把那些卡片放在一张单子里

在当前状态下调用构造函数的函数:

buildCardElementList(){
cardElementsList = [
...(marginsCard[int.parse('ID')] as List<Map<String,Object>>).map((cardElement){
return buildCardElement(cardElement['marginLeft'], cardElement['marginRight'], cardElement['marginBottom'], cardElement['marginTop']);
}).toList()];
return cardElementsList;
}

这里面有太多的尝试,我相信有多个问题。有人能帮我弄清楚语法吗?这样我就可以重新开始理解我在做什么了?

谢谢!

编辑//附言:我省略了接收/构建功能;这不是问题所在。

Enjoy;(

void main() {
final cards = marginsCard.map(_buildCard).toList();
print(cards);
}
Card _buildCard(Map<String, Object> cardElement) {
return Card(
marginLeft: resolveMargin(cardElement, 'marginLeft'),
marginRight: resolveMargin(cardElement, 'marginRight'),
marginBottom: resolveMargin(cardElement, 'marginBottom'),
marginTop: resolveMargin(cardElement, 'marginTop'),
);
}
num resolveMargin(Map<String, Object> cardElement, String marginName) {
final marginElements = cardElement['margins'] as List<Map<String, Object>>;
return marginElements.firstWhere((marginElement) => marginElement.containsKey(marginName))[marginName] as num;
}
class Card {
final num marginLeft, marginRight, marginBottom, marginTop;
Card({required this.marginLeft, required this.marginRight, required this.marginBottom, required this.marginTop});

@override
String toString() => "marginLeft: $marginLeft; marginRight: $marginRight; marginBottom: $marginBottom; marginTop: $marginTop";
}
const marginsCard = [
{
'ID': 0,
'margins': [
{'marginLeft': 0},
{'marginRight': 5},
{'marginBottom': 0},
{'marginTop': 20},
],
},
{
'ID': 1,
'margins': [
{'marginLeft': 5},
{'marginRight': 0},
{'marginBottom': 0},
{'marginTop': 20,},
],
},
{
'ID': 2,
'margins': [
{'marginLeft': 5},
{'marginRight': 0},
{'marginBottom': 0},
{'marginTop': 20,},
],
},
];

最新更新