Flutter中的Text()小部件中的TextAllCaps?

时间:2019-04-12 14:58:53

标签: dart flutter flutter-layout

当我们在Android的Textview中具有android:textAllCaps="true"功能时,如何在Flutter的 Text() 中提供相同的功能?

我知道Text('Abc'.toUpperCase())是一种方法,但我不想手动进行。是否有Text()小部件的任何属性可以自动转换它或具有类似属性的小部件?

5 个答案:

答案 0 :(得分:0)

将以下功能用作首字母大写

String getCapitalizeString({String str}) {
    if (str.length <= 1) { return str.toUpperCase(); }
    return '${str[0].toUpperCase()}${str.substring(1)}';
}

使用:

Text(this.getCapitalizeString(str: listObj[position]);

答案 1 :(得分:0)

您可以使用 TextFeild
适用于 Android、iOS、Web、macOS、Windows 和 Linux

您可以实现自定义 TextInputFormatter

class UpperCaseTextFormatter extends TextInputFormatter {
  @override
  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
    return TextEditingValue(
      text: newValue.text?.toUpperCase(),
      selection: newValue.selection,
    );
  }
}

用法:

TextField(
  inputFormatters: [
    UpperCaseTextFormatter(),
  ]
)

完整示例 GitHub

答案 2 :(得分:-1)

将这样的文本大写:“这仅是示例”,“这仅是示例”,

使用此功能:

firstCharacterUpper(String text) {
    List arrayPieces = List();

    String outPut = '';

    text = 'this is only a example'; // This is not necessary, is only for the example. The text here is that one is passed in parameter.

    text.split(' ').forEach((sepparetedWord) {
      arrayPieces.add(sepparetedWord);
    });

    arrayPieces.forEach((word) {
      word =
          "${word[0].toString().toUpperCase()}${word.toString().substring(1)} ";
      outPut += word;
    });

    return outPut;
}

OutPut:“这仅是示例”。

答案 3 :(得分:-1)

只是为了简化之前答案的功能

String getCapitalizeString(String str) {
  String cRet = '';
  str.split(' ').forEach((word) {
    cRet += "${word[0].toUpperCase()}${word.substring(1).toLowerCase()} ";
  });
  return cRet.trim();
}

答案 4 :(得分:-1)

我的解决方案是这样的:

Text(_capitalize("apple"))

而自定义方法是

String _capitalize(String value) {
    return value.substring(0, 1).toUpperCase() +
        value.substring(1, value.length);
  }

返回

Apple