Регистрация больших строк из Flutter

Я пытаюсь создать приложение Flutter и изучать дартс в процессе, но я отчасти расстраиваюсь при отладке. Я получил ресурс из API, и теперь я хочу напечатать строку JSON на консоль, но она продолжает обрезать строку.

Screenshot of the cut off string in the console

Таким образом, у меня фактически есть два вопроса: действительно ли консоль терминала является единственным способом печати отладочных сообщений и как я могу печатать большие строки на консоли без их автоматического обрезания?

Ответ 1

Попробуйте debugPrint('your output'); вместо print('your output'); документация здесь, если вы хотите прочитать. debugPrint дросселирует выход на уровень, чтобы избежать сброса ядра Android в соответствии с документацией.

Ответ 2

Используйте debugPrint с необязательным параметром для переноса в соответствии с пределом вывода платформы.

debugPrint(someSuperLongString, wrapWidth: 1024);

Ответ 4

в настоящее время дротик и трепетание не поддерживают печать журналов длиной более 1020 символов (выяснили это при попытке).

Итак, я придумал этот метод для печати длинных журналов.

static void LogPrint(Object object) async {
    int defaultPrintLength = 1020;
    if (object == null || object.toString().length <= defaultPrintLength) {
       print(object);
    } else {
       String log = object.toString();
       int start = 0;
       int endIndex = defaultPrintLength;
       int logLength = log.length;
       int tmpLogLength = log.length;
       while (endIndex < logLength) {
          print(log.substring(start, endIndex));
          endIndex += defaultPrintLength;
          start += defaultPrintLength;
          tmpLogLength -= defaultPrintLength;
       }
       if (tmpLogLength > 0) {
          print(log.substring(start, logLength));
       }
    }

}

надеюсь, что это помогло.

Ответ 5

Если вы запустите приложение в Android Studio, оно будет обрезать длинную строку.

В Xcode 10.2, который я использую, длинная строка не усекается.

Я предлагаю написать журналы выписки и запустить приложение в XCode вместо Android Studio.

Ответ 6

Вы можете сделать свой собственный принт. Определите этот метод

void printWrapped(String text) {
  final pattern = RegExp('.{1,800}'); // 800 is the size of each chunk
  pattern.allMatches(text).forEach((match) => print(match.group(0)));
}

Используйте это как

printWrapped("Your very long string ...");

Кредит