UserInfo.fromJson constructor
Creates a UserInfo from JSON response
Implementation
factory UserInfo.fromJson(Map<String, dynamic> json) {
// Extract known fields
final knownFields = {
'sub', 'email', 'name', 'given_name', 'family_name',
'picture', 'preferred_username', 'email_verified',
'locale', 'zoneinfo', 'updated_at'
};
// Collect additional data
final additionalData = <String, dynamic>{};
for (final entry in json.entries) {
if (!knownFields.contains(entry.key)) {
additionalData[entry.key] = entry.value;
}
}
return UserInfo(
userId: json['sub'] as String,
email: json['email'] as String,
fullName: json['name'] as String,
firstName: json['given_name'] as String?,
lastName: json['family_name'] as String?,
profileImage: json['picture'] as String?,
username: json['preferred_username'] as String?,
emailVerified: json['email_verified'] as bool?,
locale: json['locale'] as String?,
zoneinfo: json['zoneinfo'] as String?,
updatedAt: json['updated_at'] != null
? DateTime.parse(json['updated_at'] as String)
: null,
additionalData: additionalData,
);
}