Flutter 成员';设置状态';只能在';包:flatter/src/widgets/framework.dart';

Flutter 成员';设置状态';只能在';包:flatter/src/widgets/framework.dart';,flutter,Flutter,(i18n)我使用MyApp类外部的setState来更改语言,我收到了这个警告,不知道如何解决它 info: The member 'setState' can only be used within instance members of subclasses of 'package:flutter/src/widgets/framework.dart'. (invalid_use_of_protected_member at [flutter_firebase_authen] lib\ap

(i18n)我使用MyApp类外部的setState来更改语言,我收到了这个警告,不知道如何解决它

info: The member 'setState' can only be used within instance members of subclasses of 'package:flutter/src/widgets/framework.dart'. (invalid_use_of_protected_member at [flutter_firebase_authen] lib\app.dart:22)
类MyApp扩展StatefulWidget{
最终FirebaseAnalyticsObserver观察员;
常量MyApp({
关键点,
@需要这个观察员,
}):super(key:key);
@凌驾
_MyAppState createState()=>\u MyAppState();
静态void setLocale(BuildContext上下文,Locale newLocale){
final _myappstatestate=context.ancestorStateOfType(const TypeMatcher());
state.setState(){
state.locale=newLocale;
});
}
}

警告消息非常清楚:只能从类内部调用函数
setState
,而不能从其他类调用

解决方法很简单,在
State
类中编写一个helper函数,为您调用
setState
。例如:

refresh() => setState(() {});
现在,从这个类之外,您可以调用
state.refresh()


(但实际上,如果您是从另一个类调用
setState
,也许您应该查看
ValueNotifier
,或
StreamBuilder
,等等)。

警告消息非常清楚:函数
setState
只能从类内部调用,而不能从另一个类调用

解决方法很简单,在
State
类中编写一个helper函数,为您调用
setState
。例如:

refresh() => setState(() {});
现在,从这个类之外,您可以调用
state.refresh()


(但实际上,如果您是从另一个类调用
setState
,也许您应该查看
ValueNotifier
,或
StreamBuilder
,等等)

尝试:不要使用static和final。尝试:不要使用static和final。