我正在制作一个应用程序,并且为了显示循环进度指示器,我使用了modal_progress_hud库,当我将inAsyncCall的状态设置为true或false时,它将在modal_progress_hud中重建其所有子控件。而且我不想一次又一次地重建所有UI。它通过增加GPU的使用率来降低应用程序的效率。还有什么其他方法可以使它更好,我们只需更改属性并仅重建小部件的属性,而不是整个屏幕和其中的小部件即可。
bool circularindicator = false;
Color circularColor;
double circularOpacity;
child: ModalProgressHUD(
inAsyncCall: circularindicator,
child: body,
color: circularColor,
opacity: circularOpacity,
),
在正文中,我们在列表视图中具有所有小部件。 按下登录按钮后,我们调用了showProgress()方法并设置状态并重建窗口小部件。
@override
showProgress() {
setState(() {
circularindicator = true;
circularOpacity = 0.5;
circularColor = Colors.grey;
});
}
答案 0 :(得分:0)
设置班级StatelessWidget
并将Provider Package用于状态管理。在小部件构建功能中,保留 Provider 侦听器 false ,并使用 Consumer Widget
包装可更改的小部件。
Widget build(BuildContext context) {
final cart = Provider.of<Cart>(context, listen: false);
return GridTileBar(
leading: Consumer<Product>(
builder: (ctx, product, child) => IconButton(
onPressed: () {
product.toggleFavoriteStatus();
},
icon: Icon(product.isFavorite ? Icons.favorite : Icons.favorite_border),
color: Theme.of(context).accentColor,
),
),
trailing: IconButton(
icon: Icon(Icons.shopping_cart),
onPressed: () {
cart.addItem(product.id, product.title, product.price);
},
color: Theme.of(context).accentColor,
),
backgroundColor: Colors.black87,
title: Text(product.title),
);
}
有关提供程序包的更多详细信息:State Management Using Provider