在Widget或State上保留最终字段?

Dog*_*ion 5 dart flutter

应该在哪里保留最终价值?

StatefulWidget(我的子类当然)实例中,从State(子类)via widget.thatFinalField,或访问它

State自己.我已经看到了这两种方法..每种方法都有利弊吗?

Col*_*son 8

您应该存储final成员字段(通过构造函数参数传递)StatefulWidget并将其公开.

StatefulWidget相关的State应该只使用默认的构造函数(无参数),它的成员字段应该是不公开的(起始_)和可变的.initState如果需要昂贵或异步工作,请在内联或初始化它们.

此模式允许在StatefulWidget父项调用时使用新的构造函数参数重新创建/重建setState,同时重新使用前一个参数State并让它将值保存在其可变成员字段中.