旧版非空安全Flutter中Navigator.push()报错(user未定义)求助
问题解决:The getter 'user' isn't defined for the class '_CreatePageState'
错误信息
Error: The getter 'user' isn't defined for the class '_CreatePageState'. - '_CreatePageState' is from 'package:insta_clone2_start/create_page.dart'('lib/create_page.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'user'. context, MaterialPageRoute(builder:(context) => HomePage(user)), ^^^^
中文说明:错误提示明确指出,_CreatePageState类中不存在名为user的属性或getter方法,直接调用user会报错。
环境(非空安全)
environment: sdk: ">=2.7.0 <3.0.0"
相关代码片段
HomePage 代码
class HomePage extends StatelessWidget { final FirebaseUser user; HomePage(this.user); }
CreatePage(StatefulWidget 定义部分)
class CreatePage extends StatefulWidget { final FirebaseUser user; CreatePage(this.user); @override _CreatePageState createState() => _CreatePageState(); }
CreatePage(State类中的跳转代码)
Navigator.push( context, MaterialPageRoute(builder:(context) => HomePage(user)), );
问题原因
你将user参数定义在CreatePage这个StatefulWidget类中,但对应的状态类_CreatePageState无法直接访问父Widget的属性——Flutter规定,状态类必须通过内置的widget属性来访问所属StatefulWidget的成员变量。
解决办法
把跳转代码里的user替换为widget.user,修改后代码如下:
Navigator.push( context, MaterialPageRoute(builder:(context) => HomePage(widget.user)), );
修改后,_CreatePageState就能正确获取到CreatePage中传入的user对象,顺利传递给HomePage。
内容的提问来源于stack exchange,提问作者Yooni
相关产品推荐
相关产品推荐

