繁体   English   中英

Flutter cast 在开发中运行但在生产中崩溃

[英]Flutter cast runs in development but crashes in production

在调试期间,在我的本地 flutter 环境中允许将 null 转换为字符串。 但是,当部署到生产环境时,相同的类型转换将被视为崩溃异常。

代码可以翻译成如下:

    final dynamic test = null as String;
    print(test);

实际代码由 json_serializable package ( https://pub.dev/packages/json_serializable ) 生成,因此交替代码本身是不可能的。

我的本地环境通过flutter医生描述:本地flutter环境

生产崩溃可以在Dartpad中模拟https://dartpad.dev/?channel=old

环境有什么不同? 我希望开发环境抛出错误,所以它在被推送到生产 state 之前被发现并修复。

我试过将生产环境与开发环境进行比较,但没有发现可以解释该行为的主要区别。

as不是使用.toString()

  final dynamic test = null.toString();

同时也使用变量,

  final String data = "${model.filed}";

正如 jamesdlin 在评论中指出的那样,客户端不应该信任服务器提供可靠的数据。 实施客户端空检查和回退使客户端更具弹性。

因此,所有使用 json_serializable 声明的字段都应该标记为可为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM