Flutter中方法内调用变量提示Undefined name '_change'错误如何解决
Flutter _change变量未定义报错修复方案
- 首先修正你现有代码中的显性语法错误:你声明
List view的一行存在字符串引号未闭合、额外添加不必要括号的问题,非法语法会导致编译器无法正确识别后续变量,先修改为合法的Dart代码:
int _change = 0; // 修正后的List声明 List view = ["js", "reactN"];
- 检查变量声明的作用域:
_change作为State类的成员变量,必须声明在State类内部、所有类方法(包括build方法)之外,如果把变量写到了State类外部、或者build方法内部,_myList方法会因作用域限制无法访问到变量,触发未定义报错。 - 检查方法所属范围:
_myList方法必须和变量同属一个State类,Dart中下划线开头的变量是库私有变量,跨类、或者方法写在类外部都无法访问该私有变量。 - 检查变量拼写:确认方法内调用的变量名和声明的变量名完全一致,没有漏写下划线、字母拼写错误的情况。
以下是符合规范的完整State类示例供参考:
class MyWidget extends StatefulWidget { const MyWidget({super.key}); @override State<MyWidget> createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { // 变量声明在State类内部、所有方法之外 int _change = 0; List view = ["js", "reactN"]; // 方法同属当前State类 void _myList () { setState(() { _change += 1; }); } @override Widget build(BuildContext context) { return const Placeholder(); } }
内容的提问来源于stack exchange,提问作者ARNOLD RAPHAEL
相关产品推荐
相关产品推荐

