Last active
April 8, 2020 21:22
-
-
Save danagbemava/3b8e4b591cd426f9ba570fc88a3bb39f to your computer and use it in GitHub Desktop.
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
import 'package:flutter_bloc/flutter_bloc.dart'; | |
import 'package:rnm_graphql/blocs/home/home.dart'; | |
import 'package:rnm_graphql/services/graphql_service.dart'; | |
class HomeBloc extends Bloc<HomeEvents, HomeStates> { | |
GraphQLService service; | |
HomeBloc() { | |
service = GraphQLService(); | |
} | |
@override | |
HomeStates get initialState => Loading(); | |
@override | |
Stream<HomeStates> mapEventToState(HomeEvents event) async* { | |
if (event is FetchHomeData) { | |
yield* _mapFetchHomeDataToStates(event); | |
} | |
} | |
Stream<HomeStates> _mapFetchHomeDataToStates(FetchHomeData event) async* { | |
final query = event.query; | |
final variables = event.variables ?? null; | |
try { | |
final result = await service.performMutation(query, variables: variables); | |
if (result.hasException) { | |
print('graphQLErrors: ${result.exception.graphqlErrors.toString()}'); | |
print('clientErrors: ${result.exception.clientException.toString()}'); | |
yield LoadDataFail(result.exception.graphqlErrors[0]); | |
} else { | |
yield LoadDataSuccess(result.data); | |
} | |
} catch (e) { | |
print(e); | |
yield LoadDataFail(e.toString()); | |
} | |
} | |
} |
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
export './home_bloc.dart'; | |
export './home_events.dart'; | |
export './home_states.dart'; |
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
import 'package:equatable/equatable.dart'; | |
abstract class HomeEvents extends Equatable { | |
HomeEvents(); | |
@override | |
List<Object> get props => null; | |
} | |
class FetchHomeData extends HomeEvents { | |
final String query; | |
final Map<String, dynamic> variables; | |
FetchHomeData(this.query, {this.variables}) : super(); | |
@override | |
List<Object> get props => [query, variables]; | |
} |
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
import 'package:equatable/equatable.dart'; | |
abstract class HomeStates extends Equatable { | |
HomeStates(); | |
@override | |
List<Object> get props => null; | |
} | |
class Loading extends HomeStates { | |
Loading() : super(); | |
} | |
class LoadDataSuccess extends HomeStates { | |
final dynamic data; | |
LoadDataSuccess(this.data) : super(); | |
@override | |
List<Object> get props => data; | |
} | |
class LoadDataFail extends HomeStates { | |
final dynamic error; | |
LoadDataFail(this.error) : super(); | |
@override | |
List<Object> get props => error; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment