Flutter FutureBuilder不断被称为
问题内容:
我正在经历有趣的行为。我在有状态的小部件中有一个FutureBuilder。如果我一个人返回FutureBuilder,一切正常。我的API仅被调用一次。但是,如果我添加了额外的逻辑,并在两个小部件之间进行选择-
我可以在chrome中看到我的API被调用了数十次。我知道该build
方法可以随时执行,但是这种额外的逻辑如何完全破坏Future的行为呢?
这是api调用一次的示例。
@override
Widget build(BuildContext context) {
return FutureBuilder(..);
}
这是api如果someBooleanFlag
被多次调用的示例false
。
@override
Widget build(BuildContext context) {
if(someBooleanFlag){
return Text('Hello World');
}
else{
return FutureBuilder(..);
}
谢谢
问题答案:
即使您的代码最初工作时,您仍然不能正确执行它,正确的方法是:
// Create instance variable
Future myFuture;
@override
void initState() {
super.initState();
// assign this variable your Future
myFuture = getFuture();
}
@override
Widget build(BuildContext context) {
if (someBooleanFlag) {
return Text('Hello World');
} else {
return FutureBuilder(
future: myFuture, // use it like this
...
);
}
}