在flutter中的“ State <NormalMenuState>”类内将“ Widget”添加为字段时出错

时间:2019-08-23 05:42:25

标签: flutter dart

实施目的

登录admin后显示userScaffold 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();
  }

2 个答案:

答案 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。