Vi que muita gente teve esse erro, inclusive eu, mas fui no código do primeiro curso da formação: Fundamentos de Flutter: Crie o seu primeiro App, nele tem algo parecido com o que estamos utilizando nesse curso. Como resolver isso?
Vi que muita gente teve esse erro, inclusive eu, mas fui no código do primeiro curso da formação: Fundamentos de Flutter: Crie o seu primeiro App, nele tem algo parecido com o que estamos utilizando nesse curso. Como resolver isso?
O teste está correto, ele está informando que não está sendo chamando o método findAll() (na segunda vez), isso está ocorrendo mesmo que esteja como statefull, para resolver isso eu utilizei os seguintes códigos:
contact_form.dart: No método "_save()"
void _save(Contact newContact, BuildContext context) async {
await contactDao.save(newContact);
Navigator.pop(context, newContact);
}
Isso irá retornar junto do contexto o novo contato. agora vamos para:
contacts_list.dart: No Widget "FloatingActionButton"
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => ContactForm(
contactDao: widget.contactDao)))
.then((newContact) {
if (newContact != null) {
setState(() {
widget.contactDao.findAll();
});
}});
},
child: Icon(
Icons.add,
),
),
Isso vai validar se ele recebeu uma transação, se sim chama novamente o findAll(), caso contrário não chama. Agora no:
save_contact_flow.dart: Na volta da tela de formulário para tela de lista na função "verify()"
verify(mockContactDao.findAll()).called(2);
Se tudo estiver correto vai ser validado e o teste tera súcesso, é importante falar que o called tem o 2, pois é a segunda chamada do método findAll() na tela.
Obs: não sei o motivo no qual o teste foi válidado no curso, pode ser alguma atualização do sistema, IDE(uso vscode) entre outras coisas ou até mesmo algum erro no código. Sei que isso que demonstrei funcionou e consegui prosseguir com o curso.