实施目的
登录admin
后显示user
和Scaffold body
的不同视图。
错误
在使用Widget
类作为State<NormalMenuState>
类中的字段时,显示以下错误。
'_ NormalMenuState.widget'('()→Widget')不是对'State.widget'('()→NormalMenuState')的有效覆盖
代码
class NormalMenu extends StatelessWidget {
final String userType;
NormalMenu({this.userType});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(this.userType),
);
}
}
class NormalMenuState extends StatefulWidget {
final String userType;
NormalMenuState(this.userType);
@override
State<StatefulWidget> createState() => _NormalMenuState(userType: this.userType);
}
class _NormalMenuState extends State<NormalMenuState> {
String appTitle = 'Welcome';
final String userType;
Widget widget; //<= `This line shows error`
_NormalMenuState({this.userType});
@override
void initState() {
if (this.userType == UserType.admin) {
this.appTitle = "User Information";
widget = UserInformation();
} else {
this.appTitle = "Pay Fair";
widget = BookTicket();
}
super.initState();
}
答案 0 :(得分:1)
如果您检查源代码:
abstract class State<T extends StatefulWidget> extends Diagnosticable {
T get widget => _widget;
有一个widget
获取器,用于访问相关的StatefulWidget
类。问题不是创建一个Widget作为实例字段,而是错误提示的名称:
'_ NormalMenuState.widget'('()→Widget')不是对'State.widget'('()→NormalMenuState')的有效覆盖
因此更改变量名称:
Widget widget; => Widget myWidget;
答案 1 :(得分:0)
我建议您将小部件更改为displayWidget。因为已经使用了小部件来检索在NormalMenuState中传递的值,例如userType。