TextValue is an abstraction allowing to work with a String and a string resource ID the same way.
Add the dependency:
repositories {
mavenCentral()
google()
}
dependencies {
// Views version
implementation("com.redmadrobot.textvalue:textvalue:1.0.2")
// Compose extensions for textvalue
implementation("com.redmadrobot.textvalue:textvalue-compose:1.0.2")
}TextValue is a wrapper to make it possible to work with plain String and StringRes in the same way.
It may be useful for cases when you want to fallback to StringRes if desired string value is null.
You can wrap String and StringRes with TextValue using TextValue(String), TextValue(Int) or TextValue(String?, Int)), and use method TextValue.get(Resource) to retrieve String:
// in some place where we can't access Context
val errorMessage = TextValue(exception.message, defaultResourceId = R.string.unknown_error)
showMessage(errorMessage)
// in Activity, Fragment or View
fun showMessage(text: TextValue) {
val messageText = text.get(resources)
//...
}TextValue also could be used with Jetpack Compose:
// in Composable functions
@Composable
fun Screen(title: TextValue) {
// Remember to add com.redmadrobot.textvalue:textvalue-compose dependency
Text(text = stringResource(title))
}There are extensions to work with TextValue like with StringRes:
Context.getString(text: TextValue): StringView.getString(text: TextValue): StringResources.getString(text: TextValue): String
Merge requests are welcome. For major changes, please open an issue first to discuss what you would like to change.