状态管理库来处理setState after dispose?
来源:6-3 封装HiState处理页面状态异常

weixin_慕神9322259
3天前
setState after dispose感觉是一个很常见的问题,除了老师提供的方法我搜了一些资料。
一种使用CancelableOperationGroup,感觉针对网络请求比较适用
class _MyPageState extends State<MyPage> {
final _cancelableOperations = CancelableOperationGroup();
Future<void> fetchData() {
final operation = CancelableOperation.fromFuture(
api.getData(),
onCancel: () => print('请求已取消'),
);
_cancelableOperations.add(operation);
operation.value.then((data) {
if (!mounted) return;
setState(() => _data = data);
});
}
@override
void dispose() {
_cancelableOperations.cancel();
super.dispose();
}
}
另一种是用状态管理库,比如riverpod,似乎已经提供自动销毁的api了。感觉在实际项目开发中,是不是应该考虑使用状态管理库来做?
写回答
1回答
-
CrazyCodeBoy
2天前
是的,如果项目中有使用状态库,没有使用setState可以省去HiState的封装。00
相似问题