从 Flutter 记录大字符串

     2023-02-23     235

关键词:

【中文标题】从 Flutter 记录大字符串【英文标题】:Logging large strings from Flutter 【发布时间】:2018-08-14 18:59:20 【问题描述】:

我正在尝试构建一个 Flutter 应用程序并在此过程中学习 Dart,但在调试时我有点沮丧。我从 API 中获取了一个资源,现在我想将 JSON 字符串打印到控制台,但它一直在切断字符串。

所以我实际上有两个问题:终端控制台真的是打印调试消息的唯一方法吗?如何在控制台打印大字符串而不自动切断它们?

【问题讨论】:

为什么不直接使用断点呢? 你试过flutter logsadb logcat是否提供完整输出? 断点是一个很好的建议,但是,在不暂停我的应用程序的情况下将整个响应 JSON 字符串打印到控制台应该不是不可能的吗?断点很棒,但并不总是你想要的...... flutter logs 显示相同,这实际上是屏幕截图的来源。 【参考方案1】:

如何使用来自dart: developer 库的 Flutter 日志。这似乎没有像print()debugPrint() 这样的最大长度限制。这是唯一似乎可以正常工作的解决方案。尝试如下:

log(reallyReallyLongText)

输出将是整个长字符串,没有中断,并以[log]为前缀

【讨论】:

我做错了什么? var data = 'recordType':recordTypeText, 'horseId': horseId, 'dateOfCheck': dateOfCheck, 'title': 标题, 'details': details, 'images':images ;日志(data.toString());并且没有输出 对我仍然不起作用 @user1634451 它的输出级别不同,您可能在终端上看不到它,但它适用于 vscode 它有效!!!.. 任何导入开发人员导入的问题?【参考方案2】:

您可以制作自己的印刷品。定义这个方法

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 ...");

Credit

【讨论】:

【参考方案3】:

目前 dart 不支持打印超过 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));
       
    

【讨论】:

【参考方案4】:

使用带有可选参数的debugPrint根据平台的输出限制进行换行。

debugPrint(someSuperLongString, wrapWidth: 1024);

【讨论】:

它打印所有内容,但结果再次被截断......【参考方案5】:

如果您想阅读,请尝试debugPrint('your output'); 而不是print('your output'); 文档是here。 debugPrint 根据文档将输出限制在一定水平,以避免被 android 内核丢弃。

【讨论】:

我也读到了,我确实尝试了debugPrint,但无济于事。我现在也在 iPhone 模拟器上运行我的应用程序,并且在为 iOS 开发时没有任何关于日志被切断的情况。 嗯,谢谢你让我知道这件事。我将再次尝试检查并在 iosSimulator 上运行它。 debugPrint() 也会为我截断长字符串。限制似乎是 700 个字符。 是的,我仍然使用 debugprint 被截断 只需要添加wrapWidth: &lt;SomeBigInt&gt;调用debugPrint就不会截断了【参考方案6】:

有一个未解决的问题:https://github.com/flutter/flutter/issues/22665

debugPrint 和 print 实际上是在截断输出。

【讨论】:

【参考方案7】:

您可以使用Logger Plugin:https://pub.dev/packages/logger 实现此目的

要打印任何类型的日志,只需执行以下操作。

  var logger = Logger();

  logger.d("Logger is working!");// It also accept json objects

事实上,它甚至会为你格式化输出。

【讨论】:

它仍然不适合我:/【参考方案8】:

使用这个方法

JsonEncoder encoder = new JsonEncoder.withIndent('  ');
String prettyprint = encoder.convert(yourJsonString);
debugPrint(prettyprint);

但它只适用于 JSON 字符串,我不知道如何处理“普通”字符串。 我认为的第一件事是在每 n 个字符之后手动添加一个 \n,目前,等待稳定的修复!

【讨论】:

【参考方案9】:

如果您在 android studio 中运行应用程序,它将截断长字符串。

在我使用长字符串的 xcode 10.2 中没有截断。

我的建议是编写打印语句日志并在 Xcode 而不是 android studio 中运行应用程序。

【讨论】:

【参考方案10】:

这是一个基于@CopsOnRoad的answer的单行代码,您可以快速复制和粘贴(例如:当您想稍微修改代码并记录一些数据并临时查看时):

void printWrapped(String text) => RegExp('.1,800').allMatches(text).map((m) => m.group(0)).forEach(print);

【讨论】:

【参考方案11】:
print(''' $longObject ''');

使用这种方式,我们可以打印长数据或对象

【讨论】:

Flutter 中 Hive 框中的记录过滤和排序

...问题描述】:我使用Hive和Flutter将联系人存储为字母数字字符串,每个联系人数据都是一个带有时间戳的地图方框行=Key.=>Value\'abc123\'=>\'name\':\'JK\',\'country\':\'GB\',\ 查看详情

flutter开发初探(代码片段)

目前跨端开发比较热门的就是ReactNative和Flutter了,到底该选哪门技术似乎也快成了大前端圈的一个热门话题。对于web前端来说,基于web生态的ReactNative应该是一个更加顺畅而自然的选择;但Flutter让人动心的地方就是高性能和跨端... 查看详情

从字符串中删除邮政编码 (Flutter/Dart)

】从字符串中删除邮政编码(Flutter/Dart)【英文标题】:Removepostalcodefromstring(Flutter/Dart)【发布时间】:2021-03-0704:12:26【问题描述】:也许这是一个愚蠢的问题,但是如何使用regExp从字符串中删除数字和“-”符号?我有字符串:“45... 查看详情

Flutter 中如何从字符串中获取语言代码扑

】Flutter中如何从字符串中获取语言代码扑【英文标题】:HowtogetLanguageCodefromaStringinFlutter|Flutter【发布时间】:2021-12-2923:31:12【问题描述】:我正在创建一个社交媒体平台。所以有评论区。我创建了一个翻译功能来将任何语言评... 查看详情

如何从列表中映射 Flutter JSON 字符串?

】如何从列表中映射FlutterJSON字符串?【英文标题】:HowtoMapFlutterJSONStringsfromList?【发布时间】:2018-02-2401:20:05【问题描述】:我成功地将我的响应打印为来自我的YouTubeJSONurl的字符串,但是当我尝试通过“项目”进行序列化时,... 查看详情

Flutter:从 UI 调用异步代码的最佳实践

】Flutter:从UI调用异步代码的最佳实践【英文标题】:Flutter:BestPracticesofCallingAsyncCodefromUI【发布时间】:2018-08-1414:15:31【问题描述】:我正在开发一个Flutter应用程序,但想知道从UI调用异步代码时应该怎么做-比如说UI小部件的构... 查看详情

从 Git 历史记录中删除大文件

】从Git历史记录中删除大文件【英文标题】:RemovingbigfilesfromGithistory【发布时间】:2020-03-2012:55:06【问题描述】:我已经阅读了多个建议使用filter-branch或BFG来完成此任务的答案,但我觉得我需要进一步的建议,因为我的情况有... 查看详情

如何创建一个 Flutter Futurebuilder 函数来显示从 JSON 中获取的字符串数组?

】如何创建一个FlutterFuturebuilder函数来显示从JSON中获取的字符串数组?【英文标题】:HowdoIcreateaFlutterFuturebuilderfunctionthatdisplaysanarrayofStringstakenfromJSON?【发布时间】:2019-09-1216:22:12【问题描述】:我在Flutter中有一个项目管理应用... 查看详情

Flutter 如何从 api 下载 pdf 文件

...部署到heroku。我通过Postman和浏览器测试了api,它适用于字符串、json和pdf文件。如何让Flutter从api下载pdf文件我的nodejsapivarexpress=requir 查看详情

markdown从repo历史记录中删除大尺寸文件(代码片段)

查看详情

flutter手势密码插件从开发到发布至pub仓库(代码片段)

...1a;https://juejin.cn/post/6996860982488219661前言本篇记录的是使用Flutter完成手势密码的功能,大致效果如下图所示:该手势密码的功能比较简单,下面会详细记录实现的过程,另外还会简单说明如何将该手势密码作为插件... 查看详情

flutter手势密码插件从开发到发布至pub仓库(代码片段)

...1a;https://juejin.cn/post/6996860982488219661前言本篇记录的是使用Flutter完成手势密码的功能,大致效果如下图所示:该手势密码的功能比较简单,下面会详细记录实现的过程,另外还会简单说明如何将该手势密码作为插件... 查看详情

flutter手势密码插件从开发到发布至pub仓库(代码片段)

...1a;https://juejin.cn/post/6996860982488219661前言本篇记录的是使用Flutter完成手势密码的功能,大致效果如下图所示:该手势密码的功能比较简单,下面会详细记录实现的过程,另外还会简单说明如何将该手势密码作为插件... 查看详情

Flutter 如何使用 JSON 从 Rest API 获取 List<String> _list 数组字符串

】Flutter如何使用JSON从RestAPI获取List<String>_list数组字符串【英文标题】:FlutterHowtogetList<String>_listArraystringsfromRestAPIusingJSON【发布时间】:2021-06-2519:41:11【问题描述】:我是Flutter的新手,我想从我的mysql中获取数据,以及... 查看详情

试图从phpmyadmin导出一个大表,只导出2675条记录

】试图从phpmyadmin导出一个大表,只导出2675条记录【英文标题】:Tryingtoexportalargetablefromphpmyadmin,onlyexports2675records【发布时间】:2012-08-2421:16:31【问题描述】:我试图将一个表从MySQL数据库复制到另一个MySQL数据库,具有完全相同... 查看详情

Flutter 从 Json 转换嵌套对象返回 null

...ercise":["index":1,],"pause":["index":2,]我将练习和暂停转换为Json字符串并将它们保存在SQFLit 查看详情

为啥使用 php 从一个非常大的 csv 文件中只读取 1000 条记录?

】为啥使用php从一个非常大的csv文件中只读取1000条记录?【英文标题】:whyonly1000recordsarereadfromaverylargecsvfileusingphp?为什么使用php从一个非常大的csv文件中只读取1000条记录?【发布时间】:2015-08-0822:20:14【问题描述】:我只是在... 查看详情

Flutter 上传带有进度条的大文件。 App 和 Web 都支持

】Flutter上传带有进度条的大文件。App和Web都支持【英文标题】:Flutteruploadlargefilewithprogressbar.AppandWebbothsupport【发布时间】:2021-06-2304:49:49【问题描述】:我遇到上传大文件的问题。当从应用程序上传文件工作正常但网络挂起时... 查看详情