我使用了复选框来更新一些数据。共享数据方法为Consumer<T>
。
问题是Checkbox可以在更改状态时正常工作,但是缺少检查动画。
我已找到问题所在,如果我使用notifyListeners()
来通知数据已更改,则缺少Checkbox的动画。
窗口小部件代码如下:
bool _value = false;
@override
Widget build(BuildContext context) {
// TODO: implement build
return Row(
children: <Widget>[
Checkbox(
activeColor: Colors.green,
value: _value,
onChanged: (value) {
setState(() {
_value = value;
widget.updateEnergy(); //The problem is Here!!!!!
});
},
),
Text("foodName",
style: TextStyle(color: Colors.blue,
fontSize: 13, fontWeight: FontWeight.w300),
),
Spacer(),
],
);
}
如果我使用widget.updateEnergy();
更新onChanged()
中的数据,则动画丢失。
updateEnergy()如下:
void updateCurrentEnergy(){
_currentEnergyCount.setValue(_getCurrentEnergyCount(), _dailyTargetEnergy.unit);
notifyListeners();
}
关键是“ notifyListeners()”,如果删除了调用,则动画将返回。
我的数据类是“ with ChangeNotifier”,所以notifyListeners()
来自 ChangeNotifier 。
然后,我使用ChangeNotifierProvider.value(value: dailyRecord)
在父节点中共享数据。然后使用Consumer<DailyRecord>(...
使用数据。
希望您能帮忙,如何获得复选框的动画。 谢谢!