如何在构建之外移动变量?



如何在构建方法之外移动使用上下文的变量,以便它被创建一次?

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机制

最新更新