Skip to content

Instantly share code, notes, and snippets.

@guilhermecarvalhocarneiro
Created August 8, 2021 21:30
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/a3cb2945abac72cc861b09004749b0c7 to your computer and use it in GitHub Desktop.
Save guilhermecarvalhocarneiro/a3cb2945abac72cc861b09004749b0c7 to your computer and use it in GitHub Desktop.
Cubit com nullsafety
/// Os Métodos padrões gerados são:
/// Métodos da API
/// fecth() -> Recupera a lista de Paciente.
/// reload() -> Recarrega a lista de Paciente.
/// detail() -> Recupera os detalhes de um Paciente.
/// post() -> Salva um novo Paciente.
/// put() -> Atualiza os dados de um Paciente.
/// delete() -> Deleta um Paciente.
/// Métodos do Data
/// fetchLocal() -> Recupera a lista de Paciente
/// reloadLocal() -> Recarrega a lista de Paciente
/// detailLocal() -> Recupera os detalhes de um Paciente
/// saveLocal() -> Salva um novo Paciente
/// updateLocal() -> Atualiza um novo Paciente
/// deleteLocal() -> Deleta um novo Paciente
/// deleteAllLocal() -> Deleta um novo Paciente
/// [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 PacienteCubit extends Cubit<PacienteState> {
late PacienteService _service;
late PacienteData _data;
late PacienteModel pacienteModel;
late List<PacienteModel> pacienteList;
PacienteCubit() : super(PacienteInitial()) {
_service = PacienteService();
_data = PacienteData();
pacienteModel = PacienteModel(nome: "");
pacienteList = List<PacienteModel>.empty();
}
Future<void> fetch() async {
try {
emit(PacienteProcessState());
pacienteList.clear();
pacienteList = await _service.fetch();
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método fetch do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
Future<void> reload() async {
try {
emit(PacienteProcessState());
pacienteList.clear();
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método reload do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
Future<void> post(PacienteModel paciente) async {
try {
emit(PacienteProcessState());
pacienteModel = await _service.post(paciente);
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método post do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
Future<void> put(PacienteModel paciente) async {
try {
emit(PacienteProcessState());
pacienteModel = await _service.put(paciente);
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método put do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
Future<void> patch(PacienteModel paciente) async {
try {
emit(PacienteProcessState());
pacienteModel = await _service.patch(paciente);
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método path do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
Future<void> delete(PacienteModel paciente) async {
try {
emit(PacienteProcessState());
await _service.patch(paciente);
emit(
PacienteSuccessState(
successMessage: "Dados carregados com sucesso.",
pacienteList: pacienteList,
pacienteModel: pacienteModel,
),
);
} catch (e) {
ExceptionCustom.state("Ocorreu um erro ou executar o método delete do PacienteCubit", e.toString());
emit(PacienteErrorState(e.toString()));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment