1
resposta

[Sugestão] Tried to call Provider.of<dynamic>. This is likely a mistake and is therefore unsupported.

Ao tentar executar o exemplo da página https://cursos.alura.com.br/course/flutter-implemente-offline-first-couchbase-app/task/174196, recebi o seguinte erro:

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following assertion was thrown while handling a gesture:
Tried to call Provider.of<dynamic>. This is likely a mistake and is therefore
unsupported.

If you want to expose a variable that can be anything, consider changing
`dynamic` to `Object` instead.
'package:provider/src/provider.dart':
Failed assertion: line 330 pos 7: 'T != dynamic'

Este problema só resolvi após mudar o código

context.read<CouchbaseService>().add(
                    data: {'id': 1, 'name': 'item', 'checked': true},
                    collectionName: 'checklist',
                );

por

    Provider.of<CouchbaseService>(context, listen: false).add(
            data: {'id': 1, 'name': 'item', 'checked': true},
            collectionName: 'checklist',
          );
1 resposta

Olá Vitor!

Muito bem, tenho certeza que sua solução pode ajudar outras pessoas que se deparam com o mesmo erro. O erro que você encontrou é comum quando tentamos usar Provider.of<dynamic> por acidente, e a solução que você aplicou está correta.

No seu caso, ao mudar de context.read<CouchbaseService>() para Provider.of<CouchbaseService>(context, listen: false), você especificou explicitamente o tipo do serviço que deseja acessar, o que é uma prática recomendada. O que por si só resolve o erro, mas também torna o código mais claro e fácil de manter.

Bons estudos!

Sucesso