Post constructor

const Post({
  1. @JsonKey(name: 'id', required: true) required String id,
  2. @JsonKey(name: 'slug', required: true) required String slug,
  3. @JsonKey(name: 'title', required: true) required String title,
  4. @JsonKey(name: 'content', required: true) required String content,
  5. @JsonKey(name: 'user', required: true) required UserSimple user,
  6. @JsonKey(name: 'postStatus', required: true) required PostStatus status,
  7. @JsonKey(name: 'upvotes', defaultValue: 0) @Default(0) int upvotes,
  8. @JsonKey(name: 'commentCount', defaultValue: 0) @Default(0) int commentCount,
  9. @JsonKey(name: 'upvoted', defaultValue: false) @Default(false) bool upvoted,
  10. @JsonKey(name: 'downvoted', defaultValue: false) @Default(false) bool downvoted,
  11. @JsonKey(name: 'pinned', defaultValue: false) @Default(false) bool pinned,
  12. @JsonKey(name: 'isSubscribed', defaultValue: false) @Default(false) bool isSubscribed,
  13. @JsonKey(name: 'date', required: true) required DateTime date,
  14. @JsonKey(name: 'lastModified', required: true) required DateTime lastModified,
  15. @JsonKey(name: 'postCategory', required: true) required PostCategory postCategory,
})

Implementation

const factory Post({
  /// The id of the post
  @JsonKey(name: 'id', required: true) required String id,

  /// The slug of the post
  @JsonKey(name: 'slug', required: true) required String slug,

  /// The title of the post
  @JsonKey(name: 'title', required: true) required String title,

  /// The content of the post
  @JsonKey(name: 'content', required: true) required String content,

  /// The user who created the post
  @JsonKey(name: 'user', required: true) required UserSimple user,

  /// The status of the post
  @JsonKey(name: 'postStatus', required: true) required PostStatus status,

  /// Post upvotes
  @JsonKey(name: 'upvotes', defaultValue: 0) @Default(0) int upvotes,

  /// Post comment count
  @JsonKey(name: 'commentCount', defaultValue: 0)
  @Default(0)
  int commentCount,

  /// Whether the user has upvoted the post (false by default)
  @JsonKey(name: 'upvoted', defaultValue: false) @Default(false) bool upvoted,

  /// Whether the user has downvoted the post (false by default)
  @JsonKey(name: 'downvoted', defaultValue: false)
  @Default(false)
  bool downvoted,

  /// Whether the post is pinned (false by default)
  @JsonKey(name: 'pinned', defaultValue: false) @Default(false) bool pinned,

  /// Whether the user is subscribed to the post (false by default)
  @JsonKey(name: 'isSubscribed', defaultValue: false)
  @Default(false)
  bool isSubscribed,

  /// Date the post was created
  @JsonKey(name: 'date', required: true) required DateTime date,

  /// Date the post was last updated
  @JsonKey(name: 'lastModified', required: true)
  required DateTime lastModified,

  /// The category of the post
  @JsonKey(name: 'postCategory', required: true)
  required PostCategory postCategory,
}) = _Post;