Flutter编译错误:必须返回非空值,因为返回类型“String”不允许为空 - displayString。

4

我的测试在被我 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(Flutter稳定版)。我认为Dart在编译期间使用的displayString函数(它不是我编写的函数)。 - atreeon
只是确认有问题的函数在分析器包中,位于以下文件中:pub.dartlang.org/analyzer-1.0.0/lib/src/error/best_practices_verifier.dart - atreeon
3个回答

5

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

将该组件升级为分析器版本1.7或更高版本,似乎能够解决我的问题。


如果您在pubspec.yaml文件中没有看到分析器,请将其添加到dev_dependencies中:analyzer: ^1.7.0。 - stoiczek

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版本的主通道可以很好地处理这种情况,并成功构建。 - egorikem
升级分析器版本的解决方案比绕过第三方源更好(这些源可能随时被攻破,而且只能在本地工作区中使用)。 - stoiczek

0
请检查函数displayString是否返回非空字符串变量。下面是一些可能遇到的用例:
  1. 如果您从参数中获取变量,请使用“required”(例如:String displayString(required String var))。
  2. 如果该变量是可选参数,则需要检查它是否为空。然后,您可以使用“return var!;”来告诉函数您已经确认了变量内容。
  3. 如果您想返回可空字符串,则应将函数更改为“String?displayString”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接