Stworzyłem mapę, ale masz trudności z uzyskaniem dostępu do zmiennej "kontakt" w widgecie stanowym. Nie jestem pewien, gdzie indziej zadeklaruj final Contact contact; .

Plik modelu kontaktu.

class Contact {
int rating;
String name;
String location;
int phoneNumber;
String instagram;
int birthday;
String notes;

Contact(this.name, this.phoneNumber, this.location, this.rating,
this.instagram, this.birthday, this.notes);

Map<String, dynamic> toJson() => {
    'Name': name,
    'PhoneNumber': phoneNumber,
    'Location': location,
    'Rating': rating,
    'Instagram': instagram,
    'Birthday': birthday,
    'Notes': notes,
  };

Gdzie jest obecnie zadeklarowany final Contact contact;

class NewContact extends StatefulWidget {
NewContact({Key key, @required this.contact}) : super(key: key);
final Contact contact;

@override
NewContactState createState() => NewContactState();
}

class NewContactState<T extends NewContact> extends State<T> {
final db = FirebaseFirestore.instance; //...etc

Gdzie nazywa się mapa

 await db
                  .collection("userData")
                  .doc(uid)
                  .collection("Contacts")
                  .add(contact.toJson());

Błąd = niezdefiniowany nazwa "kontakt".

1
ashf 21 październik 2020, 23:47

1 odpowiedź

Najlepsza odpowiedź

Ponieważ contact jest zdefiniowany w klasie, która rozciąga się, który rozszerza obsady widget, {x1}} i chcesz uzyskać dostęp do niej odpowiedniej klasy stanu NewContactState, powinieneś zadzwonić do tego jak ten widget.contact.toJson().

2
Mohamad Assem Nasser 21 październik 2020, 20:53