@@ -23,24 +23,72 @@ import org.koin.core.parameter.ParametersHolder
2323import org.koin.core.qualifier.Qualifier
2424import org.koin.core.scope.Scope
2525
26+
2627/* *
27- * Resolve Koin dependency
28+ * Resolve Koin dependency for given Type T
29+ *
30+ * <u>Note</u> this version unwrap parameters to ParametersHolder in order to let remember all parameters
31+ * This parameters unwrap will be triggered on recomposition
2832 *
29- * @param qualifier
30- * @param scope - Koin's root default
31- * @param parameters - injected parameters
33+ * For better performances we advise to use koinInject(Qualifier,Scope,ParametersHolder)
34+ *
35+ * @param qualifier - dependency qualifier
36+ * @param scope - Koin's root by default
37+ * @param parameters - injected parameters (with lambda & parametersOf())
38+ * @return instance of type T
3239 *
3340 * @author Arnaud Giuliani
3441 */
42+ @Composable
3543@OptIn(KoinInternalApi ::class )
44+ inline fun <reified T > koinInject (
45+ qualifier : Qualifier ? = null,
46+ scope : Scope = currentKoinScope(),
47+ noinline parameters : ParametersDefinition ,
48+ ): T {
49+ val p = parameters.invoke()
50+ return remember(qualifier, scope, p) {
51+ scope.getWithParameters(T ::class , qualifier, p)
52+ }
53+ }
54+
55+ /* *
56+ * Resolve Koin dependency for given Type T
57+ *
58+ * @param qualifier - dependency qualifier
59+ * @param scope - Koin's root by default
60+ * @param parameters - parameters (used with parametersOf(), no lambda)
61+ * @return instance of type T
62+ *
63+ * @author Arnaud Giuliani
64+ */
3665@Composable
66+ @OptIn(KoinInternalApi ::class )
3767inline fun <reified T > koinInject (
3868 qualifier : Qualifier ? = null,
3969 scope : Scope = currentKoinScope(),
40- noinline parameters : ParametersDefinition ? = null,
70+ parameters : ParametersHolder ,
71+ ): T {
72+ return remember(qualifier, scope, parameters) {
73+ scope.getWithParameters(T ::class , qualifier, parameters)
74+ }
75+ }
76+
77+ /* *
78+ * Resolve Koin dependency for given Type T
79+ *
80+ * @param qualifier - dependency qualifier
81+ * @param scope - Koin's root by default
82+ * @return instance of type T
83+ *
84+ * @author Arnaud Giuliani
85+ */
86+ @Composable
87+ inline fun <reified T > koinInject (
88+ qualifier : Qualifier ? = null,
89+ scope : Scope = currentKoinScope()
4190): T {
42- val params: ParametersHolder ? = parameters?.invoke()
43- return remember(qualifier, scope, params) {
44- scope.getWithParameters(T ::class , qualifier,params)
91+ return remember(qualifier, scope) {
92+ scope.get(T ::class , qualifier)
4593 }
4694}
0 commit comments