自定义的BasicTextField,只包含 BasicTextField 的基本功能和 placeHolder

/**
 * 自定义的BasicTextField,只包含 @see BasicTextField 的基本功能和 placeHolder
 *
 * @param placeHolder 没有输入的占位符
 */
@Composable
fun CustomBasicTextField(
  value: String,
  onValueChange: (String) -> Unit,
  placeHolder: (@Composable BoxScope.() -> Unit)? = null,
  modifier: Modifier = Modifier,
  enabled: Boolean = true,
  readOnly: Boolean = false,
  textStyle: TextStyle = TextStyle.Default,
  keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
  keyboardActions: KeyboardActions = KeyboardActions.Default,
  singleLine: Boolean = false,
  maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
  minLines: Int = 1,
  visualTransformation: VisualTransformation = VisualTransformation.None,
  onTextLayout: (TextLayoutResult) -> Unit = {},
  interactionSource: MutableInteractionSource? = null,
  cursorBrush: Brush = SolidColor(Color.Black),
  decorationBox: @Composable (innerTextField: @Composable () -> Unit) -> Unit =
    @Composable { innerTextField -> innerTextField() }
) {
  Box(modifier = modifier){
    if (value.isEmpty() && placeHolder != null) placeHolder.invoke(this)
    BasicTextField(
      value = value,
      onValueChange = onValueChange,
      singleLine = singleLine,
      enabled = enabled,
      modifier = Modifier,
      cursorBrush = cursorBrush,
        textStyle=textStyle,
      readOnly = readOnly,
      keyboardOptions = keyboardOptions,
      keyboardActions = keyboardActions,
      maxLines = maxLines,
      minLines = minLines,
      interactionSource = interactionSource,
      visualTransformation = visualTransformation,
      onTextLayout = onTextLayout,
      decorationBox = decorationBox
    )
  }
}