为何Android Studio的Dart分析器对required关键字报未定义错误?
我有一个 Coordinate 类,要求类的两个构造参数均为必填。
Android Studio 与 Visual Studio Code 均无法识别 required 关键字。

为什么 Dart 分析器会抛出 Undefined class 'required' 错误?
分析器输出的报错信息:
required isn't a type. Try correcting the name to match an existing type.
编写的相关Dart代码:
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { Coordinate coordinate = Coordinate(lon: 3.4, lat: 2.3); return Container( child: Text(coordinate.lat.toString()), ); } } class Coordinate { double lon; double lat; Coordinate({required lon, required lat}); }
Dart SDK 版本:2.12.3(stable 稳定版)
问题原因与修复方案
出现该报错的核心触发逻辑是项目未开启空安全模式。
required 是 Dart 2.12 随空安全特性正式推出的语法关键字,作用是修饰命名参数为必填项。只有项目正式开启空安全后,分析器才会把 required 识别为语法关键字;如果未开启空安全,分析器会把 required 按照普通类名去检索,自然会抛出“未定义类 required”的错误。
可按以下步骤修复:
- 打开项目根目录的
pubspec.yaml,调整 Dart SDK 环境约束,将版本下限设置为 2.12.0 及以上:environment: sdk: ">=2.12.0 <3.0.0" - 执行
flutter pub get拉取依赖,重启 IDE 中的 Dart 分析服务,让配置生效。 - 修正 Coordinate 类的构造函数写法,给 required 修饰的参数明确非空类型,避免类型推断异常:
class Coordinate { double lon; double lat; Coordinate({required this.lon, required this.lat}); }
内容的提问来源于stack exchange,提问作者Cem Kaan
相关产品推荐
相关产品推荐

