Как отобразить списки Dynami c во флаттере - PullRequest
0 голосов
/ 05 августа 2020

Хорошо, поэтому я новичок в флаттере, но я пытаюсь получить и отобразить элементы в списке, используя map.

class TransactionTable extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return TransactionTableState();
  }
}

class TransactionTableState extends State {
  final List moneyTransactions = [
    new MoneyTransactionModel(
        id: "1",
        productId: "lime",
        entryType: "sold",
        quantity: "60kg",
        unitPrice: "240rwf/kg",
        paidBy: "mtn",
        createdAt: "2020-04-20T00:15:08.932Z"),
    new MoneyTransactionModel(
        id: "2",
        productId: "lime",
        entryType: "sold",
        quantity: "60kg",
        unitPrice: "240rwf/kg",
        paidBy: "mtn",
        createdAt: "2020-04-20T00:15:08.932Z"),
    new MoneyTransactionModel(
        id: "3",
        productId: "lime",
        entryType: "sold",
        quantity: "60kg",
        unitPrice: "240rwf/kg",
        paidBy: "mtn",
        createdAt: "2020-04-20T00:15:08.932Z"),
    new MoneyTransactionModel(
        id: "4",
        productId: "lime",
        entryType: "sold",
        quantity: "60kg",
        unitPrice: "240rwf/kg",
        paidBy: "mtn",
        createdAt: "2020-04-20T00:15:08.932Z"),
  ];
 
  Widget build(BuildContext context) {
    // return 
    return Column(
    children: <Widget>[
      moneyTransactions.map((e) => MyListTile()); // i need to the the loop here
    ],
    );
  }
}

MyListTile - это виджет, который должен отображать один элемент в список moneyTransactions

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы вкладываетесь в списки, поэтому это не работает. Также вам необходимо позвонить по номеру toList() после операции map(). Попробуйте следующий код:

Метод 1

Widget build(BuildContext context) {
  // return 
  return Column(
    children: moneyTransactions.map((e) => MyListTile()).toList(),
  );
}

Метод 2

Widget build(BuildContext context) {
  return Column(
  children: <Widget>[
      ...moneyTransactions.map((e) => MyListTile()).toList(),
    ],
  );
}
1 голос
/ 05 августа 2020

Вы вставляете список в существующий List, ваш метод сборки должен выглядеть следующим образом:

Widget build(BuildContext context) {
    return Column(
        children: moneyTransactions.map((e) => MyListTile()).toList();
    );
}

Теперь для каждого элемента в List создается один экземпляр MyListTile .

Чтобы иметь фактический доступ к информации MoneyTransaction, вам необходимо передать объект в качестве параметра в конструкторе MyListTile.

...