我正在尝试在 flutter 应用程序中使用 bloc 模式,我在 return Scaffold() 之前将代码写在构建函数的主体内;如下
@override
Widget build(BuildContext context) {
final ProductsController pController = Provider.of<ProductsController>(context);
pController.addProducts();
return Scaffold();
}
一切都很完美,但功能 addPrducts() 调用了太多次它看起来下面的代码自己重复了很多次
pController.addProducts();
这是 ProductsContoller 类的结构
class ProductsController extends ChangeNotifier {
List<Products> _products=List();
AppDatabase appDB=AppDatabase();
List<Products> get products=>_products;
addProducts() {
appDB.getFromTable(AppDatabase.TBL_PRODUCTS).then((rows){
rows.forEach((row){
Products product=Products.fromJson(row);
_products.add(product);
});
notifyListeners();
});
}
}
最佳答案
如果您的函数只应被调用一次,您应该尝试覆盖 initState()
方法并在那里调用它。如果您的类扩展了一个 StatefulWidget
,您的 build(BuildContext context)
方法可能会被调用多次。
final ProductsController pController
@override
void initState() {
pController = Provider.of<ProductsController>(context);
pController.addProducts();
super.initState();
}
关于Flutter bloc pattern 多次重复调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58879324/