Browse Source

@fun: adjust base framework

bai 3 years ago
parent
commit
c7811d56fe

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -6,6 +6,7 @@
             android:allowBackup="true"
             android:icon="@mipmap/ic_launcher"
             android:label="@string/app_name"
+            android:name=".AdmApplication"
             android:roundIcon="@mipmap/ic_launcher_round"
             android:supportsRtl="true"
             android:theme="@style/Theme.Adm">

+ 1 - 7
app/src/main/java/com/ys/bdtp/adm/AdmApplication.kt

@@ -4,10 +4,4 @@ import android.app.Application
 import org.kodein.di.DI
 import org.kodein.di.DIAware
 
-class AdmApplication : Application(), DIAware {
-    override val di: DI by DI.lazy {
-
-    }
-
-
-}
+class AdmApplication : Application()

+ 22 - 0
app/src/main/java/com/ys/bdtp/adm/App.kt

@@ -0,0 +1,22 @@
+package com.ys.bdtp.adm
+
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Surface
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.platform.LocalContext
+import com.ys.bdtp.adm.app.theme.AdmTheme
+import com.ys.bdtp.adm.di.di
+import org.kodein.di.compose.onDIContext
+import org.kodein.di.compose.withDI
+
+@Composable
+fun App() = withDI(di(LocalContext.current)) {
+    onDIContext(LocalContext.current) {
+        AdmTheme {
+            Surface(color = MaterialTheme.colors.background) {
+                Text("Android")
+            }
+        }
+    }
+}

+ 1 - 19
app/src/main/java/com/ys/bdtp/adm/MainActivity.kt

@@ -14,25 +14,7 @@ class MainActivity : ComponentActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContent {
-            AdmTheme {
-                // A surface container using the 'background' color from the theme
-                Surface(color = MaterialTheme.colors.background) {
-                    Greeting("Android")
-                }
-            }
+            App()
         }
     }
-}
-
-@Composable
-fun Greeting(name: String) {
-    Text(text = "Hello $name!")
-}
-
-@Preview(showBackground = true)
-@Composable
-fun DefaultPreview() {
-    AdmTheme {
-        Greeting("Android")
-    }
 }

+ 21 - 9
app/src/main/java/com/ys/bdtp/adm/di/Di.kt

@@ -1,19 +1,24 @@
 package com.ys.bdtp.adm.di
 
+import android.content.Context
 import android.util.Log
+import com.ys.bdtp.adm.AdmApplication
 import com.ys.bdtp.adm.app.IP
 import com.ys.bdtp.adm.app.converter.NullOrEmptyConverter
 import com.ys.bdtp.adm.app.interceptor.GzipRequestInterceptor
 import com.ys.bdtp.adm.mvvm.model.db.AdmDatabase
 import com.ys.bdtp.adm.mvvm.model.nt.Api
+import com.ys.bdtp.adm.mvvm.vm.flash.FlashRepository
 import com.ys.bdtp.adm.mvvm.vm.flash.FlashViewModel
+import com.ys.bdtp.adm.mvvm.vm.login.LoginRepository
 import com.ys.bdtp.adm.mvvm.vm.login.LoginViewModel
+import com.ys.bdtp.adm.mvvm.vm.main.MainRepository
 import com.ys.bdtp.adm.mvvm.vm.main.MainViewModel
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import org.kodein.di.DI
+import org.kodein.di.android.x.androidXModule
 import org.kodein.di.bind
-import org.kodein.di.bindProvider
 import org.kodein.di.bindSingleton
 import org.kodein.di.instance
 import org.kodein.di.provider
@@ -23,9 +28,16 @@ import retrofit2.converter.gson.GsonConverterFactory
 import java.io.UnsupportedEncodingException
 import java.util.concurrent.TimeUnit
 
-val httpModule = DI.Module("httpModule") {
-    // 构建 Retrofit 对象
+fun di(context: Context) = DI {
+    import(androidXModule(context.applicationContext as AdmApplication))
+    import(httpModule)
+    import(repositoryModule)
+    import(viewModelModule)
+    import(dbModule)
+}
 
+private val httpModule = DI.Module("httpModule") {
+    // 构建 Retrofit 对象
     bind {
         singleton {
             Retrofit.Builder()
@@ -77,17 +89,17 @@ val httpModule = DI.Module("httpModule") {
 }
 
 val repositoryModule = DI.Module("repository") {
-    //bindSingleton { AdmRepository(instance(), instance(), instance()) }
+    bind { provider { FlashRepository(instance()) } }
+    bind { provider { LoginRepository(instance()) } }
+    bind { provider { MainRepository(instance()) } }
 }
 
 val viewModelModule = DI.Module("viewModel") {
-    bind { provider { FlashViewModel() } }
-    bind { provider { LoginViewModel() } }
-    bind { provider { MainViewModel() } }
-
+    bind { provider { FlashViewModel(instance()) } }
+    bind { provider { LoginViewModel(instance()) } }
+    bind { provider { MainViewModel(instance()) } }
 }
 
-
 val dbModule = DI.Module("dbModule") {
     bind {
         singleton {

+ 3 - 1
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/flash/FlashRepository.kt

@@ -1,3 +1,5 @@
 package com.ys.bdtp.adm.mvvm.vm.flash
 
-class FlashRepository
+import com.ys.bdtp.adm.mvvm.model.nt.Api
+
+class FlashRepository(private val api: Api)

+ 1 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/flash/FlashViewModel.kt

@@ -2,5 +2,4 @@ package com.ys.bdtp.adm.mvvm.vm.flash
 
 import androidx.lifecycle.ViewModel
 
-class FlashViewModel:ViewModel() {
-}
+class FlashViewModel(private val repo: FlashRepository) : ViewModel()

+ 3 - 1
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/login/LoginRepository.kt

@@ -1,3 +1,5 @@
 package com.ys.bdtp.adm.mvvm.vm.login
 
-class LoginRepository
+import com.ys.bdtp.adm.mvvm.model.nt.Api
+
+class LoginRepository(private val api: Api)

+ 1 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/login/LoginViewModel.kt

@@ -2,5 +2,4 @@ package com.ys.bdtp.adm.mvvm.vm.login
 
 import androidx.lifecycle.ViewModel
 
-class LoginViewModel : ViewModel() {
-}
+class LoginViewModel(private val repo: LoginRepository) : ViewModel()

+ 3 - 1
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/main/MainRepository.kt

@@ -1,3 +1,5 @@
 package com.ys.bdtp.adm.mvvm.vm.main
 
-class MainRepository
+import com.ys.bdtp.adm.mvvm.model.nt.Api
+
+class MainRepository(private val api: Api)

+ 1 - 2
app/src/main/java/com/ys/bdtp/adm/mvvm/vm/main/MainViewModel.kt

@@ -2,5 +2,4 @@ package com.ys.bdtp.adm.mvvm.vm.main
 
 import androidx.lifecycle.ViewModel
 
-class MainViewModel : ViewModel() {
-}
+class MainViewModel(private val repository: MainRepository) : ViewModel()