【问题标题】:How to fetch/retrieve array Firestore and display on flutter using Getx如何使用 Getx 获取/检索数组 Firestore 并在颤振上显示
【发布时间】:2021-10-10 15:51:16
【问题描述】:

我的收藏字段中有一家餐厅,例如,这家餐厅提供单一优惠 '15% 折扣' 我已经在我的 Flutter 应用上展示了这部分。

现在假设我有另一家餐厅有多个优惠{'0': 'DISCOUNT 5%', '1': 'DISCOUNT 10%'} 我将如何在我的应用程序上显示它,我尝试了以下方法但它不起作用

Here is my collection offer field

代码如下:

class OfferModel {
String id;
List offer;

OfferModel({
this.id,
this.offer,
});

factory OfferModel.fromJson(Map<String, dynamic> json, elementId) =>
  OfferModel(
    id: elementId,
    offer: json ['offer'],
);

Map<String, dynamic> toJson() => {
"offer": offer,
};

class OfferDetail extends StatelessWidget {
final OfferModel currentOffer;
OfferDetail(this.currentOffer);

final controller = Get.put(OfferDetailController());

@override
Widget build(BuildContext context) {
controller.offer = currentOffer;

Widget offerSection = Container(
  child: Text(
    currentOffer.offer,
 );
 return Scaffold(
  body: Stack(
    children: [
      Column(
        children: [
          Expanded(
            child: ListView(
              children: [
                offerSection,
                Padding(
                  padding:
                      EdgeInsets.symmetric(vertical: 15, horizontal: 15),
                  child: Align(
                    child: ButtonFayda(
                      title: 'Get offer',
                      onPressed: () {
                        controller.offerId = currentOffer.id;
                        controller.claimOffer();
                      },
                    ),
                    alignment: Alignment.bottomCenter,
                  ),
                ),
              ],
            ),
          ),
        ],
      )
    ],
   ),
 );
}
}

class OfferDetailController extends GetxController {
var offer = OfferModel();
var offerId;

RxList<OfferModel> offerList = <OfferModel>[].obs;

var isLoading = true.obs;

//rest of the code 

}

【问题讨论】:

    标签: firebase flutter google-cloud-firestore state-management flutter-getx


    【解决方案1】:

    我无法理解您的代码,但我可以理解您的问题如下。

    你有一个这样的对象

    Object{
    field1 String,
    field2 List<String>
    }
    

    在您的 Firestore 中,您拥有相应对象的数据。现在你想知道如何获取 field2 数组。

    所以这可以使用 List.castFrom(data['field2']) 来实现。

    例如

    QuerySnapshot<Map<String, dynamic>> data = await FirebaseFirestore.instance.collection('object').get();
        List<Object> objList = data.docs.map<Object>((data) =>
         new Shop(
                 field1: data['field1'],
                 field2: List.castFrom(data['field2'])
        )
        ).toList();
    

    【讨论】:

    • 谢谢,你会如何在屏幕上显示这个?在列文本('')
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 2021-06-05
    • 2021-09-12
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多