如何将变量移出构建?
How to move a variable outside build?
如何将使用上下文的变量移动到构建方法之外,以便只创建一次?
class _EventListState extends State<EventList> {
@override
Widget build(BuildContext context) {
final eventNotifier = EventInherited.of(context).eventNotifier;
...
制作
eventNotifier
class 变量并将其连接到 getter 函数。
class _EventListState extends State<EventList> {
var? eventNotifier;
@override
Widget build(BuildContext context) {
eventNotifier = EventInherited.of(context).eventNotifier;
}
Dynamic get getEventNotifier => this.eventNotifier;
您可以使用 late
修饰符。
class _EventListState extends State<EventList> {
late final eventNotifier = EventInherited.of(context).eventNotifier;
@override
Widget build(BuildContext context) {
...
您可以使用 didChangeDependencies() 方法。此时上下文可用。
@override
void didChangeDependencies(){
super.didChangeDependencies();
final eventNotifier = EventInherited.of(context).eventNotifier;
}
该方法在特定场景下会被再次调用,请谨慎初始化。
这个线程有更多关于何时召回的信息,但通常用于初始化侦听器是可以的。
如何将使用上下文的变量移动到构建方法之外,以便只创建一次?
class _EventListState extends State<EventList> {
@override
Widget build(BuildContext context) {
final eventNotifier = EventInherited.of(context).eventNotifier;
...
制作
eventNotifier
class 变量并将其连接到 getter 函数。
class _EventListState extends State<EventList> {
var? eventNotifier;
@override
Widget build(BuildContext context) {
eventNotifier = EventInherited.of(context).eventNotifier;
}
Dynamic get getEventNotifier => this.eventNotifier;
您可以使用 late
修饰符。
class _EventListState extends State<EventList> {
late final eventNotifier = EventInherited.of(context).eventNotifier;
@override
Widget build(BuildContext context) {
...
您可以使用 didChangeDependencies() 方法。此时上下文可用。
@override
void didChangeDependencies(){
super.didChangeDependencies();
final eventNotifier = EventInherited.of(context).eventNotifier;
}
该方法在特定场景下会被再次调用,请谨慎初始化。
这个线程有更多关于何时召回的信息,但通常用于初始化侦听器是可以的。