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

问题描述

我在我的应用程序和下面的提供程序类中使用提供程序进行状态管理,我将依赖项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之前被调用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)