Идея, лежащая в основе моего кода, состоит в том, чтобы заполнить виджет Column динамическими c данными, которые я получаю из списка объектов, которые я использую List >>, по сути, это просто список объектов.
My 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"
}
],
];
Затем я вызываю функцию в столбце, который возвращает виджет (я хочу вернуть список, но он выдает ошибку)
Виджет:
Column(
children: <Widget>[
Row(
children: <Widget>[generateCardsALL()],
)
],
)
Я использую for-l oop, затем в функции a создаю виджет с этими динамическими c данными, но он возвращает только один виджет, а не коллекцию, на которую я надеялся.
my Function:
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 карты рядом друг с другом, что он может генерировать новую строку)
Это ReusableCards
ReusableCards:
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());
}
}
, если я хочу сделать его списком, а не просто виджетом, который он ломает. Может кто-нибудь, пожалуйста, помогите мне с этой дилеммой