Skip to content

Instantly share code, notes, and snippets.

@ResoDev
Created January 19, 2019 16:52
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 ResoDev/b82566e26a3b5aae8daa659a0c82bd3b to your computer and use it in GitHub Desktop.
Save ResoDev/b82566e26a3b5aae8daa659a0c82bd3b to your computer and use it in GitHub Desktop.
Custom factories for built values
//imports ...
abstract class SearchState implements Built<SearchState, SearchStateBuilder> {
bool get isLoading;
BuiltList<SearchItem> get searchResults;
String get error;
bool get hasReachedEndOfResults;
bool get isInitial =>
!isLoading && searchResults == BuiltList<SearchItem>() && error == '';
bool get isSuccessful =>
!isLoading && searchResults != BuiltList<SearchItem>() && error == '';
SearchState._();
factory SearchState([updates(SearchStateBuilder b)]) = _$SearchState;
factory SearchState.initial() {
return SearchState((b) => b
..isLoading = false
..searchResults.replace(BuiltList<SearchItem>())
..error = ''
..hasReachedEndOfResults = false);
}
factory SearchState.loading() {
return SearchState((b) => b
..isLoading = true
..searchResults.replace(BuiltList<SearchItem>())
..error = ''
..hasReachedEndOfResults = false);
}
factory SearchState.failure(String error) {
return SearchState((b) => b
..isLoading = false
..searchResults.replace(BuiltList<SearchItem>())
..error = error
..hasReachedEndOfResults = false);
}
factory SearchState.success(BuiltList<SearchItem> resultList) {
return SearchState((b) => b
..isLoading = false
..searchResults.replace(resultList)
..error = ''
..hasReachedEndOfResults = false);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment