首页 > 解决方案 > Flutter 可注入的只有工厂方法可以有参数

问题描述

所以我尝试使用 moor 创建加密数据库,并使用 Injectible/GetIt 将其注入其他类。

我有一个包装类

@Singleton.lazy(signalsReady: true)
class BillingDatabaseModule {
  static BillingDatabase _billingDatabase;

  BillingDatabase get billingDatabase => _billingDatabase;

  @factoryMethod
  static  BillingDatabaseModule billingDatabaseInit(@factoryParam String code) {
    var instance = BillingDatabaseModule();
    _billingDatabase = BillingDatabase(code);
    GetIt.instance.signalReady(instance);
    return instance;
  }
} 

这导致了以下错误

Injectable Generator ---------------------------------------------------
Error generating [BillingDatabaseModule]! only factories can have parameters
------------------------------------------------------------------------ 

所以我的问题是在输入/创建密码之前我无法打开数据库,因为它是数据库的密码。所以我试图延迟打开它,直到我创建/输入了 pin。

我的备份选项是创建一个强随机字符串并使用安全存储进行存储。我的意思是无论如何我已经为别针做了那个。

标签: flutterdependency-injectionflutter-moor

解决方案


推荐阅读