我正在经历有趣的行为。我在有状态的小部件中有一个FutureBuilder。如果我一个人返回FutureBuilder,一切正常。我的API仅被调用一次。但是,如果我添加了额外的逻辑,并在两个小部件之间进行选择- 我可以在chrome中看到我的API被调用了数十次。我知道该build方法可以随时执行,但是这种额外的逻辑如何完全破坏Future的行为呢?
build
这是api调用一次的示例。
@override Widget build(BuildContext context) { return FutureBuilder(..); }
这是api如果someBooleanFlag被多次调用的示例false。
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 ... ); } }