flutter - 你应该注入(inject)一个接口(interface)还是它的实现?

标签 flutter dart interface bloc injectable

我应该注入(inject)一个接口(interface)还是它的实现?
我在教程中遇到了下面的代码,我想知道为什么要注入(inject)接口(interface)但是当你可以直接注入(inject)它的实现时将它注册为它的实现?
登录 block

@injectable
class SignInBloc extends Bloc<SignInEvent, SignInState> {
  final IAuthFacade _authFacade;

  SignInBloc(this._authFacade) : super(SignInState.initial());
FIREBASEAUTH
@LazySingleton(as: IAuthFacade)
class FirebaseAuthFacade implements IAuthFacade {
注入(inject)配置
gh.lazySingleton<IAuthFacade>(
      () => FirebaseAuthFacade(get<FirebaseAuth>(), get<GoogleSignIn>()));

最佳答案

您希望将实现细节和依赖关系分离到特定的实现。在不同的实现之间切换会更容易,并且在测试时也更容易模拟接口(interface)。
例如,您可以将 GetIt 配置为根据接口(interface)使用不同的实现,例如开发环境、生产环境、测试环境等等。你只需要改变一条线,它就会到处改变。

关于flutter - 你应该注入(inject)一个接口(interface)还是它的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64242344/

相关文章:

android - 从应用程序 : Method not found , 收到错误 -32601 Android 中的 Flutter 升级问题

json - Dart 通过 EndPoints 将 JSON 发布到 Google App Engine

flutter - Dart/Flutter : Navigate (with Navigator) between Pages without context (so no Navigator. 推送?)

flutter - 如何在Flutter中进行自定义边框设计?

crash - 使用某些插件访问设备通讯录时,应用程序崩溃且没有任何日志

flutter - 验证 Flutter Form 中的不可见字段

dart - DARTFMT搞砸了@Component装饰器格式

从接口(interface)继承但在 UML 图中实现附加方法的类

android - 是否可以在 AIDL 接口(interface)中使用继承?

具有多种可能实现的 c# 接口(interface)