【发布时间】:2021-02-04 10:42:06
【问题描述】:
有没有办法在访问已经访问过的页面时始终触发函数?
我有一个如下所示的页面:
// Loads of imports
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage>
List<Shift> shifts = [];
Future<void> getUpcomingShifts() async {
var shiftList = await ShiftService.upcomingShifts();
setState(() {
shifts = shiftList;
});
}
@override
void initState() {
super.initState();
this.getUpcomingShifts();
}
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
return Scaffold(
extendBody: true,
drawer: SideDrawer(),
body: Column(children: <Widget>[
Header(title: I18n.of(context).pagesHomeTitle),
Container(
child: // The rest of the page
)
]));
}
}
所以我希望 getUpcomingShifts 在访问此(主页)页面时始终触发。第一次访问该页面时效果很好,但在初始化后该函数不再触发。我在这个问题上找不到任何好的例子或文档。
【问题讨论】:
-
也许你可以使用
Navigator.pushNamed(.....).then((value) => getUpcomingShifts()),或者你能详细说明你如何往返HomePage -
@jjchiw 感谢您在这里思考 :) 只有一次我浏览了
pushReplacementNamed。其他时间都是pop。当使用pop时不会有任何承诺。另外,我如何访问我正在导航到的Widget中的函数? -
我认为
promise/then应该在从HomePage推送的页面的pop之后触发......HomPage-push>ListData-pop or back> @ 987654333@ 触发promise/then,如果您使用pushReplacementNamed转到HomePage,initState应该触发getUpcomingShift -
我不清楚你的意思。您能否为我写一个更清楚的方式?
标签: flutter dart async-await