-
Notifications
You must be signed in to change notification settings - Fork 256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Injeçao de Dependencias #937
Comments
Estou com o mesmo problema. Parece que os modulos não estão sendo importados. No meu caso usei o exportedBinds e também não funcionou. Estou utilizando a versão 6.3.2 do modular |
Carlos depois de procurar muito, e eu não sei se o que fiz está certo, mas mesmo assim postei aqui minha dúvida, pq do jeito q era antes, funcionava como uma árvore e era possível acessar tudo que fosse na linha acima.
|
Julio está correto como você usou |
Continuando a fazer testes aqui, eu acho que a função i.addSingleton()/Lazy está com algum tipo de bug, está sendo recriada. Não sei pq ele a cria 2 vezes e printa o seguinte: Caso eu faça o Module.get() em units separadas ele me retorna |
No meu caso o problema estava no uso do SharedPreference com o modular. O flutter_modular não aceita bind assíncrono. Segue o código que funcionou para mim. void main() async { runApp(ModularApp(
|
I experienced this same issue after upgrading from 5.0.3 to 6.3.2 and migrating to the new
to calling the constructor explicitly in a lambda:
then it works. This seems to only be a problem when using a constructor function reference that requires a dependency from a different module. Using a constructor function reference seems to work as long as all its parameters are dependencies in the same module. |
Modular 6.3.3
|
if I import all parent modules in the child module, it also works but doesn't seem to be aligned with what we see on Modular 5... what are the guidelines? importing parent modules:
using lambda syntax:
|
I had a similar problem.
to:
I thought it was strange, but it worked. |
Version 6.3.4 seems to have now made this bug worse. Now even the
syntax fails to find dependencies declared in a separate module. The bug is actually in the modular_core version 3.3.3 dependency. |
Yep... same bug here. Anyone has find a workaround/fix for this? |
Please, we need a minimum code to be placed here so that we can check the error (main + module + widgets). |
I am available to book a call and demo the problem. Can't handle the code, though. |
Same problem here |
Segue um projeto demonstrando o problema. Crio uma instância de cliente e endereço no app_module, o cliente recebe de injeção o endereço. Normalmente eles são lidos dentro da tela Home. Na Store, caso eu queira a classe Cliente via injeção ele me retorna o erro abaixo: Se eu puxar dentro da Store a classe via Modular.get(), a dependência é encontrada! Então acho que há algum problema ao encontrar a dependência qdo ela vem por DI. |
Olá @julioffigueiredo, Olhei seu exemplo e esse não é o modo correto de trabalhar com injeção de dependências compartilhadas no Modular 6.x.x. class CoreModule extends Module {
@override
void exportedBinds(Injector i) {
i.addSingleton<Endereco>(Endereco.new);
i.addSingleton<Cliente>(Cliente.new);
}
} Depois você pode importar em qualquer módulo que precise dessas dependências, como o seu class HomeModule extends Module {
@override
List<Module> get imports => [CoreModule()];
// Aqui é só um exemplo para o caso de você precisar do bind que tem em CoreModule
// para ser usado em outro bind da HomeModule. Neste exemplo, suponha que
// OutraClasse peça em seu construtor a instância de Cliente, então bastará fazer o código
// abaixo que ele conseguirá achar a instância de Cliente, pois foi importada de CoreModule
@override
void binds(i) {
i.addSingleton(OutraClasse.new);
}
} Nas versões anteriores (<= 5.x.x) você precisava somente importar em |
Eu conheço como usar o "core module", estou usando assim. Mas pq dentro do mesmo nível, por exemplo, no HomeStore, eu consigo importar via Modular.get() mas não consigo importar via DI? |
Tenho no meu AppModule
Esses 2 ultimos binds selecionados serão importados na tela de login puxados qdo importo o LoginController que está declarado no LoginModule
LoginController() receba a injeção de ApiAuthService() que recebe a injeção de ApiAuthRepository();
O problema é que ele parece que não olha os binds declarados no app_module
Exception has occurred.
BindNotFoundException (BindNotFoundException: UnregisteredInstance: ApiAuthService not registered.
Trace: LoginController->ApiAuthService
LoginController => ApiAuthService
Estou fazendo algo de errado ou isso é bug, como estou usando a versão 6 pela primeira vez estou com esse problema, na versão 5 sempre foi certinho assim.
Caso eu passe o bind do LoginController() do login_module pro app_module, ele acha e faz a criação das classes certinho!
The text was updated successfully, but these errors were encountered: