Как получить список карт из firebase flutter

#flutter #dart

Вопрос:

Я работаю над своим проектом в флаттере, и я застрял в какой-то глупой проблеме. Я хотел бы получить список карт из Firebase, но я не могу преобразовать документ в объектный формат.

Таким образом, каждый кассовый документ идентифицируется по электронной почте пользователя. Как следствие, каждый документ будет содержать список заказов на оформление заказа, как показано на рисунке.

Это формат документа в firebase

 class UserCheckoutOrderList extends Equatable {  final String checkoutOrderDate;  final Maplt;dynamic, dynamicgt; customerAddress;  final String customerName;  final String customerPhone;  final String deliveryFee;  final String subTotal;  final String total;  final Listlt;Productgt; products;   const UserCheckoutOrderList(  {required this.checkoutOrderDate,  required this.customerAddress,  required this.customerName,  required this.customerPhone,  required this.deliveryFee,  required this.subTotal,  required this.total,  required this.products});   static UserCheckoutOrderList fromSnapshot(Listlt;DocumentSnapshotgt; snapshots) { final ordersList = snapshots.forEach((snapshot) {  return UserCheckoutOrderList(  checkoutOrderDate: snapshot['checkoutOrderDate'],  customerAddress: snapshot['customerAddress'],  customerName: snapshot['customerName'],  customerPhone: snapshot['customerPhone'],  deliveryFee: snapshot['deliveryFee'],  subTotal: snapshot['subTotal'],  total: snapshot['total'],  products: snapshot['products']); }); return ordersList; }  @override Listlt;Object?gt; get props =gt; []; }  

Это то, что я до сих пор пробовал для модели.

Ответ №1:

Я настоятельно рекомендую всегда иметь при себе удостоверение личности на любом документе. Вот как нужно обрабатывать данные:

 import 'package:equatable/equatable.dart'; import 'package:flutter/foundation.dart';  @immutable class UserCheckoutOrderListEntity extends Equatable{  final String id;  final String checkoutOrderDate;  final Map customerAddress;  final String customerName;  final String customerPhone;  final String deliveryFee;  final String subTotal;  final String total;  final List products;    const UserCheckoutOrderListEntity({  required this.id,  required this.checkoutOrderDate,  required this.customerAddress,  required this.customerName,  required this.customerPhone,  required this.deliveryFee,  required this.subTotal,  required this.total,  required this.products});   Maplt;String, dynamicgt; toMap() {  return {  'id': id,  'checkoutOrderDate': checkoutOrderDate,  'customerAddress': customerAddress,  'customerName': customerName,  'customerPhone': customerPhone,  'deliveryFee': deliveryFee,  'subTotal': subTotal,  'total': total,  'products': products,  };  }   factory UserCheckoutOrderListEntity.fromMap(Maplt;String, dynamicgt; map) {  return UserCheckoutOrderListEntity(  id: map['id'] as String,  checkoutOrderDate: map['checkoutOrderDate'] as String,  customerAddress: map['customerAddress'] as Map,  customerName: map['customerName'] as String,  customerPhone: map['customerPhone'] as String,  deliveryFee: map['deliveryFee'] as String,  subTotal: map['subTotal'] as String,  total: map['total'] as String,  products: map['products'] as List,  );  }   @override  Listlt;Object?gt; get props =gt; [id]; }  

Затем в вашем виджете:

 class CheckOut extends StatelessWidget {  const CheckOut({Key? key}) : super(key: key);   @override  Widget build(BuildContext context) {  return FutureBuilderlt;Listlt;UserCheckoutOrderListEntitygt;gt;(  future: FirebaseFirestore.instance  .collection("orderCheckOut")  .get()  .then((query) =gt; query.docs  .map((map) =gt; UserCheckoutOrderListEntity.fromMap(map.data()))  .toList()),  builder: (context, snapshot) {  return Container();  });  } }