Skip to content

Instantly share code, notes, and snippets.

@ntimesc
Created July 26, 2021 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ntimesc/9bb5ef756dba1f0613c122818b7a49e4 to your computer and use it in GitHub Desktop.
Save ntimesc/9bb5ef756dba1f0613c122818b7a49e4 to your computer and use it in GitHub Desktop.
Common request parameter in clean architecture
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