Текстовые заглушки в текстовом () виджете Flutter?

#dart #flutter #flutter-layout

#flutter #dart #flutter-макет #заглавные буквы

Вопрос:

Поскольку у нас есть android:textAllCaps="true" функция в текстовом представлении Android, как мы можем предоставить эту же функцию в текстовом () виджете Flutter?

Я знаю Text('Abc'.toUpperCase()) , это один из способов, но я не хочу делать это вручную. Есть ли какое-либо свойство виджета Text (), которое преобразует его автоматически, или любой виджет, который имеет аналогичное свойство?

Комментарии:

1. Текст (‘Wow’.Прописной ())

2. github.com/flutter/flutter/issues/22695

3. при этом мы вручную преобразуем строку в верхний регистр, есть ли какое-либо свойство text, которое преобразует его автоматически, или какой-либо виджет, свойство которого и похоже на Text()?

4. Извините Text , это не позволяет, однако в Android есть TextField aka EditText , который имеет свойство capitalization.

5. @CopsOnRoad спасибо, что поделились этим, но этот ответ не работает.

Ответ №1:

(ОТРЕДАКТИРОВАНО) Мое решение выглядит так:

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

APPLE
  

Комментарии:

1. Свойство textAllCaps в android xml преобразует весь текст в заглавную букву, а не в первую.

2. Неправильный ответ, с заглавной буквы используется только первая буква слова.

3. Отредактировал ответ

Ответ №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]);
  

Комментарии:

1. Кажется, что OP предоставил наилучший подход до сих пор в своем первоначальном вопросе: просто используйте Text('Abc'.toUpperCase())

2. Это не то, что задал вопрос, в котором спрашивалось, как сделать все слово заглавным.

3. Неправильный ответ, с заглавной буквы используется только первая буква слова.

4. Кажется, вопрос изменен, и @campovski уже упоминает в первой строке первое слово как заглавные буквы.

Ответ №3:

Чтобы заглавными буквами текст выглядел следующим образом: «это всего лишь пример» к этому «Это всего лишь пример»,

используйте эту функцию:

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

Вывод: «Это только пример».

Комментарии:

1. Неправильный ответ, с заглавной буквы используется только первая буква слова.

2. @campovski Может быть, ваш текст содержит только одно слово.

3. Я думаю, вы имели в виду, что в моих словах есть только одна буква…

Ответ №4:

просто чтобы упростить функцию ответов перед

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

Комментарии:

1. Заданный вопрос о том, чтобы сделать все слово заглавным, а не только первую букву.

2. Неправильный ответ, с заглавной буквы используется только первая буква слова.