flutter - 每当底部导航栏项目更改时,FutureBuilder 都会重新加载
问题描述
我FutureBuilder
在屏幕上使用BottomNavigationBar
. 但是,每当我单击不同的选项卡并返回时,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;
}
如何维护状态以免更新?
解决方案
// Create instance variable
Future myFuture;
@override
void initState() {
super.initState();
// assign this variable your Future
myFuture = getLessons();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Lesson>>(
future: future, // use your future here
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.none) {
} else if (snapshot.connectionState == ConnectionState.waiting) {
} else {
return Container();
}
});
}
归功于CopsOnRoad
推荐阅读
- jquery - 如何将工具提示放置在列表的正确项目上?
- mysql - mysqldump时指定/不指定用户有什么区别?
- c# - Starting a separate exe and exiting the current programm
- angularjs - 自动定位模式下 angular-ui-popover 箭头定位错误
- python - 如何在同一张图表中同时绘制价格和交易量
- php - 树层次结构渲染 symfony 4
- python - 如何获得每个字母的协调并在 numpy 数组中提取字母?
- python - 从列表和数据透视表创建数据框,Python 3.6
- android - Android 语音通话中的语音转文本
- c# - 根据子类调度协变列表元素