Flutter 如何在页面加载时运行函数? 我想在使用StatefulWidget时将位置设置为已访问。 我怎样才能只做一次?

Flutter 如何在页面加载时运行函数? 我想在使用StatefulWidget时将位置设置为已访问。 我怎样才能只做一次?,flutter,Flutter,如果我在\u LocationScreenState中运行setLocationAsVisited函数,那么它会永远运行(60fps)吗 class LocationScreen扩展StatefulWidget{ 最终位置; 定位屏幕({ @需要这个位置, }); @凌驾 _LocationScreenState createState()=>\u LocationScreenState(); } 类_LocationScreenState扩展状态{ @凌驾 小部件构建(构建上下文){ setL

如果我在
\u LocationScreenState
中运行
setLocationAsVisited
函数,那么它会永远运行(60fps)吗

class LocationScreen扩展StatefulWidget{
最终位置;
定位屏幕({
@需要这个位置,
});
@凌驾
_LocationScreenState createState()=>\u LocationScreenState();
}
类_LocationScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
setLocationAsVisited(widget.location.id);
-----------
}
}
setLocationAsVisited(int visitedID)异步{
SharedReferences prefs=等待SharedReferences.getInstance();
等待prefs.setInt('lastID',(visitedID));
}

您应该使用
initState
方法,该方法在小部件首次构建时运行一次


类LocationScreen扩展StatefulWidget{
最终位置;
定位屏幕({
@需要这个位置,
});
@凌驾
_LocationScreenState createState()=>\u LocationScreenState();
}
类_LocationScreenState扩展状态{
//初始化状态函数。
@凌驾
void initState(){
setLocationAsVisited(widget.location.id);
//确保调用super.initState();
super.initState();
});
@凌驾
小部件构建(构建上下文){
//返回小部件。
返回。。。

您应该使用
initState
方法,该方法在小部件首次构建时运行一次


类LocationScreen扩展StatefulWidget{
最终位置;
定位屏幕({
@需要这个位置,
});
@凌驾
_LocationScreenState createState()=>\u LocationScreenState();
}
类_LocationScreenState扩展状态{
//初始化状态函数。
@凌驾
void initState(){
setLocationAsVisited(widget.location.id);
//确保调用super.initState();
super.initState();
});
@凌驾
小部件构建(构建上下文){
//返回小部件。
返回。。。

如果它是无状态小部件,那么它将只运行一次,不是吗?只有在构建方法之外才会运行。但是,在有状态小部件中执行任何类型的逻辑/请求是最佳做法:)我不能在构建方法之外运行
setLocation
函数。它说:
“setLocationAsVisited”必须有一个方法体,因为“LocationScreen”不是抽象的。
您可以在您的问题中添加函数
setLocationAsVisited
吗?它是一个异步函数,所以我最好使用StatefulWidget。如果它是无状态Widget,那么它只会运行一次,不是吗?只有在构建方法之外才会运行。但是,最好的做法是执行任何类型的逻辑/re有状态小部件中的任务:)我无法在构建方法之外运行
setLocation
函数。它说:
'setLocationAsVisited'必须有一个方法体,因为'LocationScreen'不是抽象的。
您可以将函数
setLocationAsVisited
添加到您的问题中吗?这是一个异步函数,所以我最好使用StatefulW相反,我得到了。