Ответ 1
Попробуйте debugPrint('your output');
вместо print('your output');
документация здесь, если вы хотите прочитать. debugPrint
дросселирует выход на уровень, чтобы избежать сброса ядра Android в соответствии с документацией.
Я пытаюсь создать приложение Flutter и изучать дартс в процессе, но я отчасти расстраиваюсь при отладке. Я получил ресурс из API, и теперь я хочу напечатать строку JSON на консоль, но она продолжает обрезать строку.
Таким образом, у меня фактически есть два вопроса: действительно ли консоль терминала является единственным способом печати отладочных сообщений и как я могу печатать большие строки на консоли без их автоматического обрезания?
Попробуйте debugPrint('your output');
вместо print('your output');
документация здесь, если вы хотите прочитать. debugPrint
дросселирует выход на уровень, чтобы избежать сброса ядра Android в соответствии с документацией.
Используйте debugPrint с необязательным параметром для переноса в соответствии с пределом вывода платформы.
debugPrint(someSuperLongString, wrapWidth: 1024);
Для этого существует открытый вопрос: https://github.com/flutter/flutter/issues/22665
debugPrint и print на самом деле обрезают вывод.
в настоящее время дротик и трепетание не поддерживают печать журналов длиной более 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));
}
}
}
надеюсь, что это помогло.
Если вы запустите приложение в Android Studio, оно будет обрезать длинную строку.
В Xcode 10.2, который я использую, длинная строка не усекается.
Я предлагаю написать журналы выписки и запустить приложение в XCode вместо Android Studio.
Вы можете сделать свой собственный принт. Определите этот метод
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 ...");