【发布时间】:2020-06-29 06:51:50
【问题描述】:
我的代码背后的想法是使用从对象列表中获得的动态数据填充 Column 小部件 我使用 List>>,它本质上只是一个对象列表。
我的清单:
List<List<Map<String, String>>> listCardsAll = [
[
{
"cardCate": "AMEX",
"cardDesc": "American Platinum 6",
"cardImg":
"images/AMEX/American-Express®-Green-Card-Earn-Rewards-Points.png"
}
],
[
{
"cardCate": "AMEX",
"cardDesc": "American Platinum 5",
"cardImg":
"images/AMEX/American-Express®-Green-Card-Earn-Rewards-Points.png"
}
],
];
然后我在返回 Widget 的列中调用一个函数(我想返回一个 List 但它给出了错误)
小部件:
Column(
children: <Widget>[
Row(
children: <Widget>[generateCardsALL()],
)
],
)
我使用 for 循环,然后在函数中使用该动态数据创建一个小部件,但它只返回一个小部件,而不是我希望的 Collection。
我的功能:
Widget generateCardsALL() {
var count = 0;
for (var item in listCardsAll) {
count++;
if (count <= 2) {
return ReusableCards(
cardName: item[0]["cardDesc"],
cardLink: item[0]["cardImg"],
cardRowNum: count,
);
} else {
count = 0;
return ReusableCards(
cardName: item[0]["cardDesc"],
cardLink: item[0]["cardImg"],
cardRowNum: 3,
);
}
}
}
(cardRowNum只是看它的3张卡在什么时候相邻才可以生成新的一行)
这是可重复使用的卡片
可重复使用的卡片:
class ReusableCards extends StatelessWidget {
final String cardLink;
final int cardRowNum;
final String cardName;
ReusableCards(
{@required this.cardLink,
@required this.cardRowNum,
@required this.cardName});
@override
Widget build(BuildContext context) {
// addToListcards(cardLink);
print("Inserted");
return (cardRowNum == 1 || cardRowNum == 2
? GestureDetector(
onDoubleTap: () {},
child: Padding(
padding: EdgeInsets.fromLTRB(0, 15, 15, 20),
child: Container(
width: MediaQuery.of(context).size.width * 0.24,
child: SizedBox(
child: Column(
children: <Widget>[
Image.asset(cardLink, fit: BoxFit.fill),
Text(cardName)
],
),
),
),
),
)
: cardRowNum == 3
? Padding(
padding: EdgeInsets.fromLTRB(0, 15, 0, 20),
child: Container(
width: MediaQuery.of(context).size.width * 0.24,
child: SizedBox(
child: Column(
children: <Widget>[
Image.asset(cardLink, fit: BoxFit.fill),
Text("" + cardRowNum.toString())
],
),
),
),
)
: SizedBox());
}
}
如果我想让它成为一个列表而不是一个小部件,它就会中断。有人可以帮我解决这个难题
【问题讨论】:
标签: list function flutter dynamic widget