Флаттер выводит текст без строки абзаца из Firebase - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть виджет Текст, с \ n \ n в нем, чтобы выбросить пустую строку при изменении абзаца:

Text('Sibling Rivalry \n\n some more text\n\n> and even more text')

Это отлично работает и печатает пустые строки, где определены \ n \ n , Однако, когда я пытаюсь вывести точно такой же текст, но полученный из Cloud Firestore, пустые строки не выбрасываются.

Вот код загрузки:

final extracted = await _firestore
    .collection('items')
    .where("active", isEqualTo: true)
    .orderBy("playCount", descending: true)
    .getDocuments();

extracted.documents.forEach(
  (mediaData) {

    if (mediaData['itemType'] == 'V') {
      loadedMedia.add(
        MediaItem(
          // load fields for VIDEO,
          title: mediaData['title'],
          description: mediaData['description'],
          itemCatCode: mediaData['itemCatCode'],
          imageUrl: mediaData['imageUrl'],
          itemUrl: mediaData['itemUrl'],
          itemType: mediaData['itemType'],
        ),
      );
    }

И затем я пытаюсь вывести его на экран с помощью того же текстового виджета:

Text(mediaItem.description),

Кстати, я набираю текст непосредственно в Firestore, и поле описания определяется как String в Firestore. Я понятия не имею, почему / n / n не распознается, поскольку строка, поступающая из Firestore, выглядит точно так же, как указанная выше жестко закодированная строка.

Любая помощь с этим действительно будет принята, как в финальном приложении. , много текста с несколькими абзацами.

1 Ответ

2 голосов
/ 17 февраля 2020

Firestore не поддерживает escape-последовательности в строковых значениях. Если вы напишите «\ n» в строке, вы получите именно это, когда прочитаете. Если вам нужно сохранить что-то особенное, вы можете захотеть закодировать и декодировать это самостоятельно.

просто сделайте mediaItem.description, замените "\ n" на: "\ n" снова (если вы создали строку, используя \ n )

Еще одну вещь, которую вы можете попробовать mediaItem.description заменить "\\n" на: "\ n" (если он был автоматически создан с использованием некоторого textarea et c)

...