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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.