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

为何私有变量触发“命名参数不能以下划线开头”错误?附Flutter代码求解

错误原因与解决方案

错误原因

Dart语法有明确规则:命名参数不能以下划线开头。下划线开头的变量是Dart的私有成员,只能在当前文件内访问,但构造函数的命名参数属于类对外的公共接口,私有标识符不允许出现在公共接口里,所以触发了这个错误。修改final或const没用,因为问题出在参数的命名规则,和变量的修饰符无关。

解决方案

要实现“标题颜色仅当前文件可访问”的需求,只需用公共命名参数接收外部传入的值,再赋值给私有成员变量即可,修正后的代码如下:

class AppBarTitleColor extends StatelessWidget {
  // 私有成员变量,仅当前文件可访问
  final Color _appBarTitleColor;
  
  // 用公共命名参数接收值,赋值给私有变量
  const AppBarTitleColor({super.key, Color? appBarTitleColor})
      : _appBarTitleColor = appBarTitleColor ?? Colors.black;

  @override
  Widget build(BuildContext context) {
    // 注意:原代码返回自身会触发无限递归,这里替换为实际UI组件(示例为带指定颜色的标题文本)
    return Text(
      "页面标题",
      style: TextStyle(color: _appBarTitleColor),
    );
  }
}

额外提醒:你原代码的build方法返回const AppBarTitleColor()会导致无限递归,必须改成实际的UI输出,上面的示例用了带指定颜色的Text组件,你可以根据实际需求调整。

内容的提问来源于stack exchange,提问作者UF7K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:59:58