我如何从差异中调用 setState class
how can i call setState from difference class
飞镖
我有两个这样的文件
一个是stfulclass这样
class Test extends StatefulWidget {
const Test({Key? key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
updateField() // here i call function from other page
},
child: null,
);
}
}
其中一个像这样作用于其他文件或页面
updateField()async{
FirebaseFirestore.instance.collection("users").doc(currentUser.uid).update({
"faceType" : currentUser.faceType ,
});
setState(() {
currentUser.faceType= faceType;
});
}
但是一旦我使用 setstate,它说 setstate 未定义,请问我该如何使用它
谢谢
确保您在有状态小部件中调用 setState。
setState 是一种仅在有状态小部件中可用的方法。
有状态小部件之外的任何人都只是您编写的自定义方法。
也就是说,您可以使用您选择的状态管理库,并且您将能够轻松地更改有状态小部件中的不同状态。
最好的部分是逻辑代码不必在 UI.
内
您应该在 Statefull 小部件中有一个函数来处理 SetState 案例。
在此函数中,您可以调用项目其他文件中的任何函数。
因此,在您的情况下,您可以在 Statfull 小部件中使用如下函数:
class Test extends StatefulWidget {
const Test({Key? key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
_updateScreen() async {
try{
await updateField();
setState(() {
// handle the new state with Provider or whatever you prefer
});
}catch(error){
// handle errors
}
}
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
_updateScreen()
},
child: null,
);
}
}
而另一个文件可能具有如下功能:
updateField()async{
FirebaseFirestore.instance.collection("users").doc(currentUser.uid).update({
"faceType" : currentUser.faceType ,
});
}
飞镖
我有两个这样的文件
一个是stfulclass这样
class Test extends StatefulWidget {
const Test({Key? key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
updateField() // here i call function from other page
},
child: null,
);
}
}
其中一个像这样作用于其他文件或页面
updateField()async{
FirebaseFirestore.instance.collection("users").doc(currentUser.uid).update({
"faceType" : currentUser.faceType ,
});
setState(() {
currentUser.faceType= faceType;
});
}
但是一旦我使用 setstate,它说 setstate 未定义,请问我该如何使用它 谢谢
确保您在有状态小部件中调用 setState。
setState 是一种仅在有状态小部件中可用的方法。 有状态小部件之外的任何人都只是您编写的自定义方法。
也就是说,您可以使用您选择的状态管理库,并且您将能够轻松地更改有状态小部件中的不同状态。
最好的部分是逻辑代码不必在 UI.
内您应该在 Statefull 小部件中有一个函数来处理 SetState 案例。 在此函数中,您可以调用项目其他文件中的任何函数。 因此,在您的情况下,您可以在 Statfull 小部件中使用如下函数:
class Test extends StatefulWidget {
const Test({Key? key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
_updateScreen() async {
try{
await updateField();
setState(() {
// handle the new state with Provider or whatever you prefer
});
}catch(error){
// handle errors
}
}
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
_updateScreen()
},
child: null,
);
}
}
而另一个文件可能具有如下功能:
updateField()async{
FirebaseFirestore.instance.collection("users").doc(currentUser.uid).update({
"faceType" : currentUser.faceType ,
});
}