如何在构建方法之外移动使用上下文的变量,以便它被创建一次?
class _EventListState extends State<EventList> {
@override
Widget build(BuildContext context) {
final eventNotifier = EventInherited.of(context).eventNotifier;
...
可以使用late
修饰符
class _EventListState extends State<EventList> {
late final eventNotifier = EventInherited.of(context).eventNotifier;
@override
Widget build(BuildContext context) {
...
make
eventNotifier
类变量,并将其连接到getter函数
class _EventListState extends State<EventList> {
var? eventNotifier;
@override
Widget build(BuildContext context) {
eventNotifier = EventInherited.of(context).eventNotifier;
}
Dynamic get getEventNotifier => this.eventNotifier;
你可以使用didChangeDependencies()方法。此时上下文可用。
@override
void didChangeDependencies(){
super.didChangeDependencies();
final eventNotifier = EventInherited.of(context).eventNotifier;
}
这个方法在某些情况下会被再次调用,所以要注意初始化的内容。
该线程有更多关于何时被召回的信息,但通常可以将其用于初始化侦听器。了解颤振didChangeDependencies机制