我有一个类(扩展了ChangeNotifier-提供程序包),该类具有返回Future的函数。我想做的是拥有它,以便我的UI代码中的多个futureBuilder可以从该函数接收值,而不必为每个FutureBuilder调用一次该函数。
但是,我使用的每个FutureBuilder都会一次又一次运行函数本身。我知道必须有一种方法可以通过Provider程序包公开Future本身,但我似乎还不知道该怎么做。
这是扩展ChangeNotifier并具有未来的类:
SPRING_PROFILES_ACTIVE
这是UI代码(它只是FutureBuilder):
cloud
我没有在小部件树中的“顶层”包含MultiProvider,因为我不明白为什么要这么做。我没有为CurrencyTicker类添加模型。如有必要,我可以提供这两种方式。
在这里将不胜感激
答案 0 :(得分:1)
您不想直接在使用者的build方法内部进行HTTP调用。
您应该公开一个属性,而不是在ChangeNotifier上公开方法:
class MyNotifier with ChangeNotifier {
Future<Foo> foo;
}
foo
是一个变量,用于存储上一次fetchData
调用的结果。
根据您的需要,您可以:
fetchData
class MyNotifier with ChangeNotifier {
MyNotifier() {
foo = fetchData();
}
Future<Foo> foo;
}
class MyNotifier with ChangeNotifier {
Future<Foo> _foo;
Future<Foo> get foo => _foo ??= fetchData();
}