我正在使用BottomNavigationBar
的屏幕上使用FutureBuilder
。但是每当我点击不同的选项卡并返回时,FutureBuilder
都会重新加载所有内容。我已经在使用AutomaticKeepAliveClientMixin
,我在保存**getLessons()**时遇到问题,因此我不必重新加载它。有人能帮助我吗?
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Lesson>>(
future: getLessons(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.none) {
} else if (snapshot.connectionState == ConnectionState.waiting) {
} else {
return Container();
}
});
}
这是我的getLessons():
Future<List<Lesson>> getLessons() async {
String url = "...";
http.Response response = await http.get(url);
var data = json.decode(response.body);
(...)
return lessons;
}
如何维护状态以避免更新?
3条答案
按热度按时间tzxcd3kk1#
贷记CopsOnRoad
r6hnlfcb2#
问题是我在没有使用
PageView
的情况下调用了屏幕。我在build()
之外启动了4个屏幕,并在一个PageView
内调用了它们,现在它工作了。ruoxqz4g3#
如果将PageView替换为PreloadPageView,则不会再次调用FutureBuilder
只需安装
preload_page_view
here