AppKit is a singleton that interacts with the AppKit SDK.
Implementation
Initialize
Copy
val connectionType = ConnectionType.AUTOMATIC or ConnectionType.MANUAL
val projectId = "" // Get Project ID at https://dashboard.reown.com/
val appMetaData = Core.Model.AppMetaData(
name = "Kotlin.AppKit",
description = "Kotlin AppKit Implementation",
url = "kotlin.reown.com",
icons = listOf("https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media"),
redirect = "kotlin-modal-wc://request"
)
CoreClient.initialize(projectId = projectId, connectionType = connectionType, application = this, metaData = appMetaData)
AppKit.initialize(
init = Modal.Params.Init(CoreClient),
onSuccess = {
// Callback will be called if initialization is successful
},
onError = { error ->
// Error will be thrown if there's an issue during initialization
}
)
Session properties
You can define session properties by calling thesetSessionProperties method on the AppKit object.
Chains
This example of define ethereum chain. You can define the chains you want to use. The chain must be EVM compatible.Copy
Example of definition chains: https://github.com/reown-com/reown-kotlin/blob/main/product/appkit/src/main/kotlin/com/reown/appkit/presets/AppKitChainsPresets.kt
AppKit.setChains(AppKitChainsPresets.ethChains.values.toList())
Chains must be set before opening the modal.
Usage
- Compose Accompanist
- Compose Component
- Kotlin DSL
- Nav graph
Copy
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetState
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.google.accompanist.navigation.material.BottomSheetNavigator
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.navigation.material.ModalBottomSheetLayout
import com.google.accompanist.navigation.material.bottomSheet
import com.reown.appkit.ui.appKitGraph
setContent {
val modalSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true)
val bottomSheetNavigator = BottomSheetNavigator(modalSheetState)
val navController = rememberNavController(bottomSheetNavigator)
ModalBottomSheetLayout(bottomSheetNavigator = bottomSheetNavigator) {
NavHost(
navController = navController,
startDestination = "home"
) {
composable("home") {
HomeScreen()
}
appKitGraph(navController)
}
}
}
ModalBottomSheetLayout should be imported from Accompanist Navigation MaterialCopy
import com.reown.appkit.ui.openAppKit
navController().openAppKit(
shouldOpenChooseNetwork = true | false
onError = { }
)
Copy
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.ModalBottomSheetState
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.compose.material.ModalBottomSheetLayout
setContent {
val modalSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true)
val coroutineScope = rememberCoroutineScope()
val navController = rememberNavController()
ModalBottomSheetLayout(
sheetContent = {
AppKitComponent(
shouldOpenChooseNetwork = true | false,
closeModal = { coroutineScope.launch { modalSheetState.hide() }
)
}
) {
// content
}
}
Copy
import androidx.navigation.createGraph
import androidx.navigation.fragment.fragment
import com.reown.appkit.ui.appKitGraph
navController.graph = navController.createGraph("Home") {
fragment<HomeFragment>("Home")
appKit()
}
Copy
import androidx.navigation.fragment.findNavController
import com.reown.appkit.ui.openAppKit
findNavController().openAppKit(
shouldOpenChooseNetwork = true | false
onError = { }
)
Copy
<navigation >
<fragment
android:id="@+id/HomeFragment"
android:name="com.reown.sample.HomeFragment">
</fragment>
<include app:graph ="@navigation/appkit_graph"/>
</navigation>
Copy
import androidx.navigation.fragment.findNavController
import com.reown.appkit.ui.openAppKit
findNavController().openAppKit(
shouldOpenChooseNetwork = true | false
onError = { }
)