'Firebase, Flutter, Provider - Mapping, and Using Data via Provider

I'm new to flutter and firebase (and yes i know this question has been asked before). But i've seen plenty of different ways to map firebase data into provider, and some reason cannot get a single to work. I have this data structure. And all i wish, is to Map it into an class / object.

Firebase screenshot

This is my data model.dart:

@immutable
class Requests {
  Requests({
    this.name = '',
    this.pairingId = 0,
  });

  final String name;
  final double pairingId;

  Requests.fromJson(Map<String, Object?> json)
      : this(
          name: json['name']! as String,
          pairingId: json['pairingId'] as double,
        );

  Map<String, Object?> toJson() {
    return {
      'name': name,
      'pairingId': pairingId,
    };
  }
}

@immutable
class UserDataTest with ChangeNotifier {
  UserDataTest({
    this.firstName = '',
    this.lastName = '',
    this.gender = '',
    this.dateOfBirth,
    this.userUID = '',
    this.uidp = '',
    this.pairingId = 0,
    this.requests = const [],
  });

  UserDataTest.fromJson(Map<String, Object?> json)
      : this(
          firstName: json['firstName']! as String,
          lastName: json['lastName']! as String,
          gender: json['gender']! as dynamic,
          dateOfBirth: json['dateOfBirth']! as DateTime?,
          userUID: json['userUID']! as String,
          uidp: json['uidp']! as String,
          pairingId: json['pairingId']! as double,
          requests: json['requests']! as List<Requests>,
        );

  late final String firstName;
  final String lastName;
  final dynamic gender;
  final DateTime? dateOfBirth;
  final String userUID;
  final String uidp;
  final double pairingId;
  final List<Requests> requests;

  Map<String, Object?> toJson() {
    return {
      'firstName': firstName,
      'lastName': lastName,
      'gender': gender,
      'dateOfBirth': dateOfBirth,
      'userUID': userUID,
      'uidp': uidp,
      'pairingId': pairingId,
      'requests': requests,
    };
  }
}

But from here i dont have any solution that works just partly. Again, my wish is to be able to just write, ex. user.firstName and display the first Name. How do i get to there? I know im missing the call to firebase, but i haven't been successful in making one. I dont know if have to do something inside the provider. (Yes i have a multiprovider at the top of my tree and a call to the provider where im using it or wanting to)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source