You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Android Studio的Dart分析器对required关键字报未定义错误?

我有一个 Coordinate 类,要求类的两个构造参数均为必填。
Android Studio 与 Visual Studio Code 均无法识别 required 关键字。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 18:15:03