Saya memiliki fungsi ini menggunakan pabrik, (yang jujur saya tidak yakin mengapa diperlukan, saya baru saja mendapatkannya dari tutorial, tetapi sedang mengerjakan sisa kode).

Ini adalah fungsi yang dimaksud:

factory Listing.fromJason(Map<String, dynamic> data, String id) {
    List<String> images = [];

    data['photos'].forEach((photo) {
      images.add(photo);
    });

    return Listing(
      id: id,
      photos: images,
      price: double.parse(data['price'].toString()),
      status: data['status'],
      street: data['street'],
      street2: data['street2'],
      city: data['city'],
      state: data['state'],
      zipCode: int.parse(data['zipCode'].toString()),
      bedRooms: data['bedRooms'],
      bathRooms: data['bathRooms'],
      lotSize: data['lotSize'],
      schoolDistric: data['schoolDistric'],
      taxes: double.parse(data['taxes'].toString()),
      homeFeatures: data['homeFeatures'],
      floorPlans: data['floorPlans'],
      propertySurvey: data['propertySurvey'],
      yearBuilt: data['yearBuilt'],
      listingAgentName: data['listingAgentName'],
      listingAgentEmail: data['listingAgentEmail'],
      listingAgentPhone: data['listingAgentPhone'],
      dayStore: DateTime.parse(data['dayStore'].toDate().toString()),
      downPayment: data['downPayment'],
      county: data['county'],
      url: data['url'],
      listingType: data['listingType'],
      name: data['name'],
      username: data['username'],
      email: data['email'],
      imageUrl: data['image_url'],
      //isFavorite: favStat,
    );
  }

Masalah yang saya miliki adalah bahwa saya perlu menelepon ke dalamnya fungsi ini untuk mengevaluasi status favorit:

Future<bool> isItFav(docId) async {
    final user = FirebaseAuth.instance.currentUser;
    final uid = user.uid;

    DocumentSnapshot favoriteSnapshot = await FirebaseFirestore.instance
        .doc('userfavorites/$uid/favorites/$docId')
        .get();

    bool result = favoriteSnapshot.exists;
    return result;
  }

Masalahnya adalah bahwa di dalam fungsi yang dengan pabrik tidak memungkinkan saya untuk membiarkannya sebagai async atau menanti.

Dan saya perlu mengevaluasi dengan nilai ID (yang saya dapatkan sebagai parameter di atas) jika dokumen untuk koleksi itu (yang pada fungsi isitfav) ada dan dengan bool menambahkannya ke objek daftar yang saya kembalikan .

Ada ide tentang apa yang bisa saya lakukan.

Salam.

0
Rene Alas 28 Mei 2021, 23:54

1 menjawab

Jawaban Terbaik

Cukup gunakan metode static alih-alih konstruktor bernama factory. factory Konstruktor tidak menawarkan keunggulan signifikan dalam hal ini.

1
jamesdlin 28 Mei 2021, 22:19