Created
July 26, 2021 11:02
-
-
Save ntimesc/9bb5ef756dba1f0613c122818b7a49e4 to your computer and use it in GitHub Desktop.
Common request parameter in clean architecture
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void main(){ | |
// only UI has exposure to `UserProfileRequestData` and not to the `UserProfileRequestDataModel` | |
final data = UserProfileRequestData(id:101,first_name:"John",last_name:"Carry"); | |
updateUserProfileRepo(data); | |
} | |
void updateUserProfileRepo(IRequest request){ | |
print(request.toRequest()); | |
} | |
abstract class IRequest{ | |
Object toRequest(); | |
} | |
//Entity | |
class UserProfileRequestData implements IRequest{ | |
late final int id; | |
late final String first_name; | |
late final String last_name; | |
UserProfileRequestData( | |
{required this.id, | |
required this.first_name, | |
required this.last_name}); | |
@override | |
Object toRequest() { | |
// TODO: implement toRequest | |
throw UnimplementedError(); | |
} | |
} | |
//Model | |
class UserProfileRequestDataModel extends UserProfileRequestData implements IRequest { | |
UserProfileRequestDataModel({ | |
required int id, | |
required String first_name, | |
required String last_name,}):super( id: id, | |
first_name: first_name, | |
last_name: last_name,); | |
Map<String, dynamic> toJson() { | |
return { | |
"first_name": first_name, | |
"last_name": last_name, | |
"id": id, | |
}; | |
} | |
@override | |
Map<String, dynamic> toRequest() => toJson(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment