状态管理库来处理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的封装。
0
0

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1746 学习 · 882 问题

查看课程