如何在flutter中将依赖项注入changenotifier并在main.dart中注册提供者

时间:2020-10-14 23:24:07

标签: android flutter dart iso

我在我的应用程序和下面的提供程序类中使用提供程序进行状态管理,我将依赖项SignWithFacebook注入到提供程序类中所需的SignInWithFacebookProvider,并且我在main.dart中运行runApp函数之前注册了依赖项但我收到此错误。

Failed assertion: line 13 pos 76: 'signInWithFacebook != null': is not true.

如果我从提供程序构造函数中删除断言,它将抛出空异常

我的提供者类

class SignInWithFaceBookProvider extends ChangeNotifier {
  final SignInWithFacebook signInWithFacebook;

  SignInWithFaceBookProvider({@required this.signInWithFacebook}) : assert(signInWithFacebook != null);

  Future<Either<Failure, UserEntity>> signIn() async {
    return await signInWithFacebook(NoParams());
  }
}

我在提供程序处注册的Main.dart

runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (_) => SignInWithFaceBookProvider(),
        ),
      ],
      child: MyApp(),
    ),
  );

我的init方法,用于在应用启动之前注册依赖项


final sl = GetIt.instance;
Future<void> init() async {


  //use cases
  sl.registerFactory(
    () => SignInWithFacebook(
      signInRepository: sl(),
    ),
  );

  // Features
  sl.registerFactory(
        () => SignInWithFaceBookProvider(
      signInWithFacebook: sl(),
    ),
  );

  //repositories
  sl.registerLazySingleton<SignInRespository>(
    () => SignInRepositoryImpl(
      networkInfo: sl(),
      remoteDataSource: sl(),
    ),
  );

PS:此init方法在开始呈现UI之前被调用

0 个答案:

没有答案