не удалось использовать карту для отображения списка OrderItems - PullRequest
0 голосов
/ 01 мая 2020

я пытался с помощью Listtile визуализировать каждый элемент в List, который является свойством класса Order Model, а OrderItem является другим классом Model, но происходит то, что все элементы отображаются в каждом индексе, как на снимке экрана

все элементы отображаются в каждом элементе как этот снимок , что код в виджете, который я использую для отображения всех элементов в listView, но все эти элементы отображаются в каждом элементе

 final orderItem = Provider.of<OrderProvider>(context).findOrderById(orderId);
.
.
. 
),
        ),
        Container(
          decoration: BoxDecoration(
            color: Colors.white,
            border: Border.all(color: Colors.grey),
            borderRadius: BorderRadius.circular(10),
          ),
          padding: EdgeInsets.all(10),
          margin: EdgeInsets.only(bottom: 20),
          height: (mediaQuery
                  - appBar.preferredSize.height
                  - MediaQuery.of(context).padding.top)*0.30,
          width: MediaQuery.of(context).size.width*.8,
          child: ListView.builder(
            itemCount: orderItem.orderItems.length,
            itemBuilder: (ctx, index)=>
            ListTile(
              leading: CircleAvatar(
                child: Image.network(orderItem.orderItems.map((item)=>item.image).toString()),
              ),
              title: Text(orderItem.orderItems.map((item)=>item.itemName).toString()),
              subtitle: Text(orderItem.orderItems.map((item)=>item.count).toString()),
              trailing: Text(orderItem.orderItems.map((item)=>item.userComments).toString()),
            ),
          ),

и ниже находится класс модели Order, который включает другой класс модели с именем OrderItem в виде списка

class Order {
  int id;
  String userName;
  String userMobile;
  int numberOfItems;
  String orderSummary;
  double price;
  String currentStatus;
  String address;
  double vatAmount;
  double serviceTax;
  double delivery;
  double discountValue;
  String restaurantName;
  int restaurantId;
  String branchName;
  List<OrderItem> orderItems;
  String orderComment;
  bool inBranch;
.
.
.
}

, и это модель класса OrderItem

class OrderItem {  
  int count;
  String categoryName;
  String itemName;
  String description;
  double price;
  String userComments;
  int orderItemId;
  int menuItemId;
  String image;
.
.
.
}

1 Ответ

0 голосов
/ 01 мая 2020

Я не думаю, что вам нужно использовать карту, так как вы уже используете конструктор ListView. Вы хотели сделать что-то вроде этого:

ListView.builder(
  itemCount: orderItem.orderItems.length,
  itemBuilder: (_, index) {
    final item = orderItem.orderItems[index];
    return  ListTile(
      leading: CircleAvatar(child: Image.network(item.image)),
      title: Text(item.itemName),
      subtitle: Text("${item.count}"),
      trailing: Text(item.userComments),
    );
  }
),

Или, если вы предпочитаете использовать карту, что-то подобное может сработать:

ListView(
  children: [
    ...orderItem.orderItems.map((item) =>
      ListTile(
        leading: CircleAvatar(child: Image.network(item.image)),
        title: Text(item.itemName),
        subtitle: Text("${item.count}"),
        trailing: Text(item.userComments),
      ),
    ),
  ],
);
...