如何在Flutter构造函数参数上使用@required注释?

Dun*_*nes 15 annotations widget flutter

当我使用@requiredIntelliJ 注释构造函数参数时显示错误:

注释必须是const变量引用或const构造函数调用

任何人都可以建议我做错了什么?

class StatusBar extends StatelessWidget {
  final String text;

  const StatusBar({Key key, @required this.text})
      : assert(text != null),
        super(key: key);

  @override
  Widget build(BuildContext context) {
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 31

需要导入注释

添加到文件的顶部

import 'package:flutter/foundation.dart';
Run Code Online (Sandbox Code Playgroud)

应该解决它.

DartAnalyzer理解的注释由meta包提供.

为了使Flutter开发人员更容易,Flutter团队决定将该meta软件包添加到Flutter SDK并重新导出flutter/foundation.dart.因此,flutter的注释与元数据包提供的注释完全相同,如果您愿意,也可以添加meta到依赖项中pubspec.yaml并从中导入注释.如果您希望在AngularDart和Flutter之间重用代码,这是首选方法,因为从package:flutter/...Dart Web应用程序中无法使用从中导入的代码.


mad*_*ant 16

请在源文件的开头导入包“ meta”。

// @required is defined in the meta.dart package
import 'package:meta/meta.dart';
Run Code Online (Sandbox Code Playgroud)


boo*_*ung 5

您的代码中是否包含以下代码?

import 'package:meta/meta.dart';
Run Code Online (Sandbox Code Playgroud)

如果您的代码包含上述代码并且出现错误,请检查pubspec.yaml文件:

dependencies:
  meta: ^1.4.0
  flutter:
    sdk: flutter
Run Code Online (Sandbox Code Playgroud)

请注意上面示例中的元部分。

如果错误仍然存​​在,请在 CLI 上尝试以下操作:

pub upgrade
Run Code Online (Sandbox Code Playgroud)