Skip to content

Instantly share code, notes, and snippets.

@guilhermecarvalhocarneiro
Created September 22, 2021 13:22
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 guilhermecarvalhocarneiro/3e01a5f36c021983605808fa84105659 to your computer and use it in GitHub Desktop.
Save guilhermecarvalhocarneiro/3e01a5f36c021983605808fa84105659 to your computer and use it in GitHub Desktop.
CubitNullSafety
/// Os Métodos padrões gerados são:
/// Métodos da API
/// fecth() -> Recupera a lista de Cliente.
/// reload() -> Recarrega a lista de Cliente.
/// detail() -> Recupera os detalhes de um Cliente.
/// post() -> Salva um novo Cliente.
/// put() -> Atualiza os dados de um Cliente.
/// delete() -> Deleta um Cliente.
/// Métodos do Data
/// fetchLocal() -> Recupera a lista de Cliente
/// reloadLocal() -> Recarrega a lista de Cliente
/// detailLocal() -> Recupera os detalhes de um Cliente
/// saveLocal() -> Salva um novo Cliente
/// updateLocal() -> Atualiza um novo Cliente
/// deleteLocal() -> Deleta um novo Cliente
/// deleteAllLocal() -> Deleta um novo Cliente
/// [Travar o arquivo]
/// Caso deseje "travar" o arquivo para não ser parseado novamente
/// pelo manage do Django adicione um # antes da palavra abaixo
/// FileLocked
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import '../../../utils/exception.dart';
import 'model.dart';
import 'service.dart';
import 'data.dart';
part 'state.dart';
class ClienteCubit extends Cubit<ClienteState> {
late ClienteService _service;
ClienteData _data = ClienteData();
ClienteModel clienteModel = ClienteModel();
List<ClienteModel> clienteList = <ClienteModel>[];
ClienteCubit({ClienteModel? clienteModel}):
super(ClienteInitial()) {
_service = ClienteService(cliente: clienteModel ?? this.clienteModel);
}
Future<void> fetch() async {
try {
emit(ClienteProcessState());
clienteList.clear();
clienteList = await _service.fetch();
emit(
ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método fetch do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
Future<void> reload() async {
try {
emit(ClienteProcessState());
clienteList.clear();
emit(ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método reload do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
Future<void> post(ClienteModel cliente) async {
try {
emit(ClienteProcessState());
clienteModel = await _service.post(cliente);
emit(ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método post do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
Future<void> put(ClienteModel cliente) async {
try {
emit(ClienteProcessState());
clienteModel = await _service.put(cliente);
emit(ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método put do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
Future<void> patch(ClienteModel cliente) async {
try {
emit(ClienteProcessState());
clienteModel = await _service.patch(cliente);
emit(ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método path do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
Future<void> delete(ClienteModel cliente) async {
try {
emit(ClienteProcessState());
await _service.patch(cliente);
emit(ClienteSuccessState(
successMessage: "Dados carregados com sucesso.",
clienteList: clienteList,
clienteModel: clienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método delete do ClienteCubit", e.toString());
emit(ClienteErrorState(e.toString()));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment