我想启动一个函数,该函数在MyChangeNotifier更改时返回future .
使用future 的构建器小部件并直接调用该函数可以起作用,但这也会在重建小部件时调用该函数,从而导致对我的函数进行不必要的调用.该函数应该像init函数一样在构建方法之外调用,但仅在MyChangeNotifier更新时才调用.
我没有找到这个问题的解决方案. 在初始化函数中,没有构建上下文来访问MyChangeNotifier并添加监听器.似乎要访问此构建上下文,您需要处于构建方法中,然后每次小部件重建时都会强制调用您.
我想念什么?您有一个优雅的解决方案来解决这个问题吗?
我希望这个speedo代码可以帮助您更好地理解我的问题.
MyChangeNotifier extends ChangeNotifier {
//contains a list of directories that can be updated from anywhere in the app
}
MyWidget extend StatelessWidget { // probably some states are needed
Widget build(BuildContext context) {
var myChangeNotifier = Provider.of<MyChangeNotifier>(context);
return FutureBuilder(future: _computemd5(myChangeNotifier), builder: return Text(futur_result);); // the future is computed every time the build method is called not only when MyChangeNotifier changed.
}
future<String> _computemd5(MyChangeNotifier myChangeNotifier) {
// compute
}
}