为何私有变量触发“命名参数不能以下划线开头”错误?附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
相关产品推荐
相关产品推荐

