在审查用 kotlin 编写的一些代码时,有件事引起了我的注意。我在一些项目中查看领域层,在一些项目中,我看到挂起功能和 Flow 一起使用,而在一些项目中,我看到只使用 Flow。
例如暂停和流动在一起:
class FetchMovieDetailFlowUseCase @Inject constructor(
private val repository: MovieRepository
) : FlowUseCase<FetchMovieDetailFlowUseCase.Params, State<MovieDetailUiModel>>() {
data class Params(val id: Long)
override suspend fun execute(params: Params): Flow<State<MovieDetailUiModel>> =
repository.fetchMovieDetailFlow(params.id)
}
Run Code Online (Sandbox Code Playgroud)
只是流动
class GetCoinUseCase @Inject constructor(
private val repository: CoinRepository
){
operator fun invoke(coinId:String): Flow<Resource<CoinDetail>> = flow {
try {
emit(Resource.Loading())
emit(Resource.Success(coin))
}catch (e:HttpException){
emit(Resource.Error(e.localizedMessage ?: "An unexpected error occured"))
}catch (e:IOException){
emit(Resource.Error("Couldn't reach server. Check your internet connection."))
}
}
}
Run Code Online (Sandbox Code Playgroud)
只是暂停
class GetLatestNewsWithAuthorsUseCase( …Run Code Online (Sandbox Code Playgroud) 我一直试图将列中的按钮从底部到中心对齐一段时间,但我无法成功。
听到的是我的代码:
营养习惯筛查
@Composable
fun NutritionHabitsRoute(
navHostController: NavHostController,
sharedViewModel: SharedViewModel,
viewModel: NutritionHabitsViewModel = hiltViewModel()
) {
val state by viewModel.state.collectAsState()
NutritionHabit(
navHostController = navHostController,
sharedViewModel = sharedViewModel,
state = state,
buttonEnabled = viewModel::buttonEnabled
)
}
@Composable
fun NutritionHabit(
navHostController: NavHostController,
sharedViewModel: SharedViewModel,
state: NutritionHabitsScreenState,
buttonEnabled: (MutableList<Int>, MutableList<Int>) -> Unit
) {
val firstChoicesItems = sharedViewModel.registerItems?.choices?.get(0)?.items
val secondChoicesItems = sharedViewModel.registerItems?.choices?.get(1)?.items
var firstSelectedIndexes = remember { mutableListOf<Int>() }
var secondSelectedIndexes = remember { mutableListOf<Int>() }
Scaffold(
topBar = { BackPopUp(navController = navHostController, …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-compose-layout
我该如何Content padding parameter it is not used在 kotlin 中解决这个问题?我制作了一个字典应用程序,并编辑了一些代码,我遇到了这样的问题:我应该在哪里添加内容填充?我该如何修复它?
@Composable
fun MainScreen(navController: NavController) {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(
backgroundColor = bar,
title = {
Text(
text = "Main Menu",
modifier = Modifier.fillMaxWidth(),
color = Color.White,
fontSize = 22.sp
)
},
navigationIcon = {
IconButton(
onClick = { navController.navigate(Screen.SearchScreen.route) }
) {
Icon(
painter = painterResource(id = R.drawable.ic_look_for_96),
contentDescription = "search",
tint = Color.Unspecified,
)
}
}
)
} …Run Code Online (Sandbox Code Playgroud) 我正在做密码文本字段,我想在用户输入时做密码点,但默认密码点图标很小,我想要更大的文本字段密码点。我怎样才能做到这一点 ?
听到的是我的 TextFiedl 代码 ->
var text by remember { mutableStateOf("") }
var isFocused by remember { mutableStateOf(false) }
val color = if (isFocused || text.isNotEmpty()) DefaultDYTColor else Color.Transparent
TextField(
modifier = Modifier
.fillMaxWidth()
.border(
width = if (isFocused) 1.dp else 0.dp,
color = color,
shape = RoundedCornerShape(25.dp)
)
.clip(RoundedCornerShape(25.dp))
.onFocusChanged {
isFocused = it.isFocused
},
value = text,
onValueChange = { newText ->
text = newText
},
visualTransformation = PasswordVisualTransformation(),
leadingIcon = {
Image(painter = painterResource(id = R.drawable.ic_password), …Run Code Online (Sandbox Code Playgroud) textfield kotlin android-jetpack-compose android-compose-textfield