Flutter 成员';设置状态';只能在';包:flatter/src/widgets/framework.dart';
(i18n)我使用MyApp类外部的setState来更改语言,我收到了这个警告,不知道如何解决它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
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。