Flutter 如何使用构造函数在有状态小部件中传递数据?

Flutter 如何使用构造函数在有状态小部件中传递数据?,flutter,flutter-widget,Flutter,Flutter Widget,我是一个新手,我想我错过了一些关于构造函数和有状态小部件的信息。我尝试了很多方法,但总是有错误。我只想将数据传递到我的有状态小部件中,从那里进行操作 这是我的错误 The instance member 'widget' can't be accessed in an initializer. Try replacing the reference to the instance member with a different expression 这是我的密码 class CreateEdu

我是一个新手,我想我错过了一些关于构造函数和有状态小部件的信息。我尝试了很多方法,但总是有错误。我只想将数据传递到我的有状态小部件中,从那里进行操作

这是我的错误

The instance member 'widget' can't be accessed in an initializer.
Try replacing the reference to the instance member with a different expression
这是我的密码

class CreateEducatorEventForm extends StatefulWidget {
  final DateTime day = DateTime.now();
  final String favoriteId = '';

  CreateEducatorEventForm(DateTime day, String favoriteId);

  @override
  _CreateEducatorEventFormState createState() =>
      _CreateEducatorEventFormState();
}

class _CreateEducatorEventFormState extends State<CreateEducatorEventForm> {
  final _formKey = GlobalKey<FormState>();
  bool _isLoading = false;
  String _eventName = '';
  String _eventDescription = '';
  DateTime _eventDateStart = widget.day;
  DateTime _eventDateFinish = widget.day;

class CreateEducatorEventForm扩展StatefulWidget{
final DateTime day=DateTime.now();
最后一个字符串favoriteId='';
CreateEducatorEventForm(日期时间日,字符串favoriteId);
@凌驾
_CreateEducatorEventFormState createState()=>
_CreateEducatorEventFormState();
}
类_CreateEducatorEventFormState扩展状态{
final _formKey=GlobalKey();
bool_isLoading=false;
字符串_eventName='';
字符串_eventDescription='';
DateTime\u eventDateStart=widget.day;
DateTime\u eventDateFinish=widget.day;

您可以将其移动到
initState

class _CreateEducatorEventFormState extends State<CreateEducatorEventForm> {
    final _formKey = GlobalKey<FormState>();
    bool _isLoading = false;
    String _eventName = '';
    String _eventDescription = '';
    DateTime _eventDateStart;
    DateTime _eventDateFinish;

    @override
    void initState() {
        super.initState();

        _eventDateStart = widget.day;
        _eventDateFinish = widget.day;
    }
}
class\u CreateEducatorEventFormState扩展状态{
final _formKey=GlobalKey();
bool_isLoading=false;
字符串_eventName='';
字符串_eventDescription='';
DateTime\u eventDateStart;
DateTime\u eventDateFinish;
@凌驾
void initState(){
super.initState();
_eventDateStart=widget.day;
_eventDateFinish=widget.day;
}
}

公平地说,除非您真的需要将其存储到您的状态中(例如,如果它真的参与了小部件的生命周期),您应该在需要时通过
widget.day
引用它。

它说getter day调用为null。可能逻辑中有一点错误是的,我真的需要它,它是一个表单小部件,在加载表单时显示数据。对,但请记住,您仍然可以在
构建()中引用
widget.day
函数。现在,如果您需要通过
setState(({{u eventDateStart=…})
更改它,那么使用
initState()
就像@Evan在他的回答中所说的那样是一种方法。