旅拍模块问题

来源:16-8 旅拍页面交互与我的页面实现

悠闲0

2022-03-03

问题1:定义了ScrollController,页面销毁时未及时释放。

@override
void dispose() {
    super.dispose();
    _scrollController.dispose();
}

问题2:上拉加载更多时,只做页数处理,数据并未处理bug。

_loadData({loadMore = false}) {
    if (loadMore) {
      //上拉加载更多
      pageIndex++;
    } else {
      //下拉刷新
      pageIndex = 1;
    }

    TravelDao.fetch(widget.travelUrl ?? TRAVEL_URL,
            widget.groupChannelCode ?? '', pageIndex, PAGE_SIZE)
        .then((TravelItemModel? model) {
      _loading = false;
      setState(() {
        List<TravelItem> items = _filterItems(model!.resultList);
        if (travelItems.isEmpty) {//问题:这里无需判断travelItems是否为空,初始化已经声明了[];未对上拉加载更多数据处理。
          travelItems.addAll(items);
        } else {
          travelItems = items;
        }
      });
    }).catchError((e) {
      _loading = false;
      print(e);
    });
  }

修改后

_loadData({loadMore = false}) {
    if (loadMore) {
      //上拉加载更多
      pageIndex++;
    } else {
      //下拉刷新
      pageIndex = 1;
    }

    TravelDao.fetch(widget.travelUrl ?? TRAVEL_URL,
            widget.groupChannelCode ?? '', pageIndex, PAGE_SIZE)
        .then((TravelItemModel? model) {
      _loading = false;
      setState(() {
        List<TravelItem> items = _filterItems(model!.resultList);
        if (loadMore) {//上拉加载更多
          travelItems.addAll(items);
        } else {//下拉刷新
          travelItems = items;
        }
      });
    }).catchError((e) {
      _loading = false;
      print(e);
    });
}
写回答

1回答

CrazyCodeBoy

2022-03-04

@override
void dispose() {
    super.dispose();
   
}
可以调下顺序先执行
_scrollController.dispose();
后执行super.dispose();,这样可以防止当页面销毁时,页面中的_scrollController还没释放的情况。

0
1
悠闲0
好的,感谢老师。这里我修改下! initState与dispose有点混淆。 我查了一下stackoverflow,initState推荐下面的写法。 @override void initState() { super.initState(); // DO STUFF } @override void dispose() { // DO STUFF super.dispose(); } 参考地址:https://stackoverflow.com/questions/58400001/should-i-call-super-initstate-at-the-end-or-at-the-beginning
2022-03-04
共1条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程