首页 > 解决方案 > Android在存储库模式中注入带有刀柄的firebase firestore

问题描述

当我尝试在我的存储库的构造函数中添加 firebaseFirestore 时,我的项目出现问题,“错误:找不到符号返回 DaggerBraziliexApplication_HiltComponents_SingletonC.builder()”

并且我无法构建项目,在这种情况下我应该如何进行注入?

界面

interface NewsRepository {
suspend fun fetchNewsFromApi(
    query: String,
    date: String,
    apiKey: String
): Flow<Result<List<NewsModelView>>>
}

RepositoryImpl

class NewsRepositoryImpl @Inject constructor(
private val apiService: NewsService,
private val newsMapper: NewsMapper,
private val firestore: FirebaseFirestore
): NewsRepository {

override suspend fun fetchNewsFromApi(
    query: String,
    date: String,
    apiKey: String
): Flow<Result<List<NewsModelView>>> {
   //TODO Implement API Request
}

private fun saveDataInFirestore(modelView: List<NewsModelView>, date: String) {
    //TODO use firebaseFirestore do save response
}
}

刀柄模块:

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {

private const val baseUrl = "https://newsapi.org/v2/"

@Provides
@Singleton
@Named("news_api")
fun provideRetrofit(): Retrofit{
    return Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
}

@Provides
@Singleton
fun provideNewsService(@Named("news_api") retrofit: Retrofit): NewsService{
    return retrofit.create(NewsService::class.java)
}

@Provides
@Singleton
    fun provideFirestore() = FirebaseFirestore.getInstance()
}

@Module
@InstallIn(ViewModelComponent::class)
abstract class RemoteModule {

    @Binds
    @ViewModelScoped
    abstract fun bindRemoteRepository(remoteRepository: NewsRepositoryImpl): NewsRepository
}

标签: androidgoogle-cloud-firestorerepositorydagger-hilt

解决方案


推荐阅读