【问题标题】:Flutter compile error: non-null value must be returned since the return type 'String' doesn't allow null - displayStringFlutter编译错误:必须返回非空值,因为返回类型'String'不允许空 - displayString
【发布时间】:2021-06-07 09:37:28
【问题描述】:

我的测试无法在我的 Flutter 项目引用的仅 Dart 项目中编译和运行。我收到以下错误消息

Failed to precompile test:test:
../../../../../../../../../.pub-cache/hosted/pub.dartlang.org/analyzer-1.0.0/lib/src/error/best_practices_verifier.dart:1952:14: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
  String get displayString {

有什么想法吗?

Flutter 2.2.1 (current stable channel)
Tools • Dart 2.13.1

(我也在 Flutter 的 github 上问过这个问题) https://github.com/flutter/flutter/issues/83683

【问题讨论】:

  • 2.13.1(颤振稳定)。我认为 Dart 在编译时使用的 displayString 函数(不是我写的函数)
  • 只是为了确认有问题的函数在下面的文件pub.dartlang.org/analyzer-1.0.0/lib/src/error/best_practices_verifier.dart的分析器包中

标签: flutter dart


【解决方案1】:

有一个组件使用 1.0.0 版分析器

升级此组件以使用 1.7 或更高版本的分析器似乎解决了我的问题。

【讨论】:

  • 如果您在 pubspec.yaml 文件中看不到分析器,请将其添加到 dev_dependencies:分析器:^1.7.0
【解决方案2】:

转到这个文件:flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-1.5.0/lib/src/error/best_practices_verifier.dart:1978:14。

并在下面添加:-

default:
    return '';

【讨论】:

  • 丑陋但有效。有趣的是 2.1.0 的主频道(截至本评论之日)可以正常处理这种情况并成功构建
  • 分析器版本升级的解决方案比破解 3rd 方源更好(可以随时溢出并且只能在本地工作区工作)。
【解决方案3】:

请检查函数 displayString 以确保它返回非空字符串变量。我猜你可能会遇到一些用例

  1. 如果您从参数中获取变量,请使用“必需”(例如:String displayString(required String var))。
  2. 如果变量是可选参数,那么你需要检查它是否为空。然后,您可以“返回 var!;”让函数知道您已经确认了变量内容。
  3. 如果要返回可为空的字符串,则应将函数更改为“String?displayString”。

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多