knthmn
03/23/2021, 4:38 AMNavHostController.navigate()
? My database is backed by a String
primary key that can contain chars like ?
and /
.Ian Lake
03/23/2021, 4:41 AMUri.encode
Ian Lake
03/23/2021, 4:42 AMknthmn
03/23/2021, 4:43 AMUri
standard?
edit: nvm it is the static method that takes a String
Nick
06/24/2022, 10:10 PMIan Lake
06/24/2022, 10:13 PMUri.decode
the string values before putting them in your arguments
. It sounds like something is causing you to double encodeNick
06/24/2022, 10:21 PMobject LabResultsList : HistoryRoutes("labresults/{patientId}/{patientTitle}/{isDependent}") {
fun createRoute(patientTitle: String, isDependent: Boolean, patientId: String): String {
val encodedPatientId = patientId.encode()
val encodedPatientTitle = patientTitle.encode()
return "labresults/$encodedPatientId/$encodedPatientTitle/$isDependent"
}
}
composable(route = HistoryRoutes.LabResultsList.route) { backStackEntry ->
val patientTitle = backStackEntry.arguments?.getString("patientTitle")!!
val patientId = backStackEntry.arguments?.getString("patientId")!!
val isDependent = backStackEntry.arguments?.getBoolean("isDependent")!!
LabResultsListScreen(
navController = navController,
patientId = patientId,
patientTitle = patientTitle,
isDependent = isDependent
)
}
private fun String.encode() = URLEncoder.encode(this, UTF_8.name())
Nick
06/24/2022, 10:22 PMNick
06/24/2022, 10:23 PMNick
06/24/2022, 10:34 PMNick
06/24/2022, 10:35 PMURLEncoder
, you have to use Uri.encode
Ian Lake
06/24/2022, 10:35 PM