Flutter中Text()小部件中的TextAllCaps是什么?

29

在Android的Textview中,我们有android:textAllCaps="true"功能,那么在Flutter的Text() Widget中如何实现相同的功能呢?

我知道可以使用Text('Abc'.toUpperCase())来手动实现,但我不想手动操作。有没有Text() widget自动转换的属性或类似属性的widget?


11
Text('Wow'.toUpperCase()) - user10539074
1
https://github.com/flutter/flutter/issues/22695 - CopsOnRoad
通过这种方式,我们手动将字符串转换为大写字母。是否有文本的属性可以自动转换它或者任何类似于Text()的小部件可以实现此属性? - Gaurang Goda
1
抱歉,“Text”不允许这样做,但是在Android中有“TextField”,也称为“EditText”,它具有大小写属性。 - CopsOnRoad
@Eugene,没什么问题,我正在寻找一种更短、更常见的方法,可以为所有人创建一个通用的Text()小部件。 - Gaurang Goda
显示剩余3条评论
4个回答

21

(编辑过)我的解决方案是这样的:

Text("apple".toUpperCase())
Returns:

APPLE

1
在Android XML中,textAllCaps属性将所有文本转换为大写字母,而不是仅限于第一个字母。 - Atul Chaudhary
答案错误,仅将单词的第一个字母大写。 - campovski
修改了答案。 - Guvanch

2

使用以下函数将第一个单词大写

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

使用:

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

8
看起来 OP 在他的原始问题中提供了到目前为止最好的方法:只需使用 Text('Abc'.toUpperCase()) - Kirill Karmazin
这不是问题所问的,它要求如何将整个单词大写。 - Ben
答案错误,仅将单词的第一个字母大写。 - campovski
问题似乎已经改变,@campovski已经在第一行提到了首字母大写。 - Dharmesh Mansata

0

将文本像这样转换为首字母大写的形式:"this is only a example" 转换为 "This Is Only A Example",

请使用此函数:

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;
}

输出:'这只是一个例子'。


答案错误,仅将单词的第一个字母大写。 - campovski
@campovski 也许你的文本只有一个单词。 - André Felipe
我猜你的意思是我的话只有一个字母... - campovski

-1

只是为了简化之前答案的函数

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

1
问题是要求将整个单词大写,而不仅仅是第一个字母。 - Ben
答案错误,仅将单词的第一个字母大写。 - campovski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接