Skip to content

Instantly share code, notes, and snippets.

View FlutterWiz's full-sized avatar
🎯
Discipline

FlutterWiz FlutterWiz

🎯
Discipline
View GitHub Profile
final List<CharacterModel> characterList = ref.watch(searchProvider).characterList;
Consumer(
builder: (context, ref, child) {
return IconButton(
onPressed: () {
if (textfieldController.text.isEmpty) {
ref.refresh(searchProvider);
} else {
ref.refresh(searchProvider);
ref.read(searchProvider.notifier).mapEventsToState(
SearchedTextChanged(
void main() {
runApp(
ProviderScope(
child: Sizer(
builder: (context, orientation, deviceType) {
return const AppWidget();
},
),
),
);
final searchProvider = StateNotifierProvider.autoDispose<SearchNotifier, SearchState>(
(ref) {
final characterModelList = ref.watch(charactersDatasProvider).whenOrNull(data: (data) => data);
return SearchNotifier()
..mapEventsToState(
UpdateListItems(
characterModelList: characterModelList ?? [],
),
);
class SearchNotifier extends StateNotifier<SearchState> {
SearchNotifier() : super(SearchState.empty());
void mapEventsToState(SearchEvent event) {
event.map(
searchedTextChanged: (searchedTextChangedEvent) {
final characterList = [...state.characterList];
final searchedCharacterList = characterList
.where((characterModel) => characterModel.characterName
.toLowerCase()
part 'search_event.freezed.dart';
@freezed
class SearchEvent with _$SearchEvent {
const factory SearchEvent.searchedTextChanged({required String text}) = SearchedTextChanged;
const factory SearchEvent.updateListItems({required List<CharacterModel> characterModelList}) = UpdateListItems;
}
part 'search_state.freezed.dart';
@freezed
class SearchState with _$SearchState {
factory SearchState({
required List<CharacterModel> characterList,
}) = _SearchState;
const SearchState._();
factory SearchState.empty() => SearchState(
part 'character.freezed.dart';
@freezed
class CharacterModel with _$CharacterModel {
factory CharacterModel({
required String characterName,
required String characterImgUrl,
}) = _CharacterModel;
const CharacterModel._();
final charactersDatasProvider = FutureProvider.autoDispose<List<CharacterModel>>(
(ref) {
return ref.read(apiProvider).getCharactersDatas().then(
(characters) {
final List<CharacterModel> characterList = [];
for (var i = 0; i < 10; i++) {
characterList.add(
CharacterModel(
characterName: characters[i]["name"],
final apiProvider = Provider((ref) => ApiService());