Giter VIP home page Giter VIP logo

Comments (11)

zmtzawqlp avatar zmtzawqlp commented on August 16, 2024

你tab没有做缓存? 还有你为啥不在页面dispose的时候 dispose掉资源。请认真看看demo

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024
 @override
  void initState() {
    super.initState();
    _goodListModel = GoodListModel();
  }

  @override
  void dispose() {
    _goodListModel?.dispose();
    super.dispose();
  }

我大概是这么写的, 然后还是会闪退, 我tab不保持的, 换一个就重新reload, 所以没做缓存,
我把GoodListModel内的addAll()注释掉之后就没有闪退情况了, 我用xcode去查是一个操控了一个为null的内存

from loading_more_list.

zmtzawqlp avatar zmtzawqlp commented on August 16, 2024

flutter 层面的报错是不会闪退的

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024

flutter 层面的报错是不会闪退的

他是这个list操作的是ios那边的内存, 然后这个界面被销毁的时候, 这个list也没了,异步操作了addAll, 导致再次使用了销毁的list, 然后闪退了

from loading_more_list.

zmtzawqlp avatar zmtzawqlp commented on August 16, 2024

听不懂你的意思。。。有能固定重现的demo吗

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024
class GoodsList extends StatefulWidget {
  const GoodsList({
    Key key,
  }) : super(key: key);

  @override
  State<StatefulWidget> createState() {
    return GoodsListState();
  }
}

class GoodsListState extends State<GoodsList> {
  GoodListModel _goodListModel;


  @override
  void initState() {
    super.initState();
    _goodListModel = GoodListModel(setting: _setting);
  }

  @override
  void dispose() {
    _goodListModel?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return LoadingMoreSliverList(
      SliverListConfig(
        itemBuilder: (BuildContext context, dynamic data, int index) {
          Widget child = GoodsCardTemplate(
            data: data,
          );
          return child;
        },
        sourceList: _goodListModel,
      ),
    );
  }
}

class GoodListModel extends LoadingMoreBase {
  int pageNo = 1;
  int _pageSize = 16;

  bool _hasMore = true;
  bool forceRefresh = false;

  @override
  bool get hasMore => _hasMore || forceRefresh;

  @override
  Future<bool> refresh([bool clearBeforeRequest = false]) async {
    _hasMore = true;
    pageNo = 1;

    forceRefresh = !clearBeforeRequest;
    var result = await super.refresh(clearBeforeRequest);
    forceRefresh = false;
    return result;
  }

  @override
  Future<bool> loadData([bool isloadMoreAction = false]) async {
    bool isSuccess = false;

    fianl List res = // http

    if (res != null) {
      isSuccess = true;
      if (res.length < _pageSize) {
        _hasMore = false;
      }
      addAll(res);
      pageNo++;
    }

    return isSuccess;
  }
}

上面就是我loadmoreList的写法

from loading_more_list.

zmtzawqlp avatar zmtzawqlp commented on August 16, 2024

能运行,能复现的demo

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024

我整体demo非常大外部是pageView嵌套NestedScrollView

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024

然后我点外部tab controller切换pageview的时候, 会闪退

from loading_more_list.

Bedroome avatar Bedroome commented on August 16, 2024

我进行多次尝试, 发现就是这个loadData网络请求之后如果调用list内部方法就会闪退, xcode检测到是内存异常, 使用了被释放的内存

from loading_more_list.

zmtzawqlp avatar zmtzawqlp commented on August 16, 2024

最好是提供能运行,能复现的demo。 没有这么多时间云debug

from loading_more_list.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.