无法使用地图呈现 OrderItems 列表
failed to use map to render a list of OrderItems
我尝试使用 Listtile 呈现列表中的每个项目,该列表是订单模型 class 中的 属性 并且 OrderItem 是另一个模型 class,但是发生的事情是所有项目都在每个索引中被撕裂,就像在屏幕截图中一样
每个元素中的所有项目都呈现为此快照
我用来呈现 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 模型 class,它包含另一个称为 OrderItem 的模型 class 作为 List
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
class OrderItem {
int count;
String categoryName;
String itemName;
String description;
double price;
String userComments;
int orderItemId;
int menuItemId;
String image;
.
.
.
}
我认为您不需要使用地图,因为您已经在使用 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),
),
),
],
);
我尝试使用 Listtile 呈现列表中的每个项目,该列表是订单模型 class 中的 属性 并且 OrderItem 是另一个模型 class,但是发生的事情是所有项目都在每个索引中被撕裂,就像在屏幕截图中一样
每个元素中的所有项目都呈现为此快照 我用来呈现 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 模型 class,它包含另一个称为 OrderItem 的模型 class 作为 List
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
class OrderItem {
int count;
String categoryName;
String itemName;
String description;
double price;
String userComments;
int orderItemId;
int menuItemId;
String image;
.
.
.
}
我认为您不需要使用地图,因为您已经在使用 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),
),
),
],
);