flutter_listview_loadmore icon indicating copy to clipboard operation
flutter_listview_loadmore copied to clipboard

Begin to loadMoreData at the half index of last page

Open DannyChowGitHub opened this issue 5 years ago • 2 comments

Here is my implement:

Future<bool> loadMoreData() async {
    _offset += 1;
    print('loading offset: $_offset');
    final nextPageVendors =
        await VendorService.getVendors(null, offset: _offset, limit: 20);
    setState(() {
      _vendors.addAll(nextPageVendors);
    });
    print('vendor list length: ${_vendors.length}');
    return true;
  }

Container(
     height: 710.0,
     child: LoadMore(
          child: ListView.builder(
          itemCount: _vendors.length,
          itemBuilder: (context, index) {
               return _buildItem(context, index);
            },
         ),
         onLoadMore: loadMoreData,
         whenEmptyLoad: false,
         delegate: DefaultLoadMoreDelegate(),
         textBuilder: DefaultLoadMoreTextBuilder.chinese,
    ),
),

Widget _buildItem(BuildContext context, int index) {
    final vendor = _vendors[index];
    print('index: $index; ${vendor.id}: ${vendor.name}');
    vendor.lowestPrice = 10000.0;
     .
     .
     .
}

Here is the log:

flutter: message: Loading vendors page
flutter: index: 0; 6c1a77c5-34de-4fe2-8120-427028315cc1: quia earum officiis
flutter: index: 1; 0a816116-cd5b-4f5e-ae6f-5d0f33d97350: vero rerum quia
flutter: index: 2; 47655d0f-d8d4-4d4e-b877-9c1cfe1e4fba: officiis architecto error
flutter: index: 3; 44c5e2fb-fb76-4d45-976a-a522f4b59ad8: deserunt nulla nesciunt
flutter: index: 4; b4f3a245-488a-4ff1-95a0-720397ce6dc4: et asperiores modi
flutter: index: 5; 6217e370-6a82-4163-b98b-c14d8f2fee89: consectetur molestias qui
flutter: index: 6; 4986bbdb-d0fb-4f04-8c5b-857f0b50746a: rerum qui a
flutter: index: 7; 42087545-78bf-425f-9478-20f7182d5787: molestiae dolorum corporis
flutter: index: 8; 487e2cc6-889e-4219-9ea2-b5491e8d5c02: repudiandae vero eos
flutter: index: 9; e46dc760-ea55-4558-8d6d-281acdf09fa7: id et et
flutter: index: 10; 89d9c9d7-d098-4075-b64c-606eac23dc31: praesentium nisi excepturi
flutter: index: 11; 7a3e3733-bb0d-4a0e-8c98-858273a4ec70: explicabo optio et
flutter: index: 12; 27417b84-86e9-4410-b7d1-1d4df023960f: sit et explicabo
flutter: index: 13; bcdcbf0e-48ed-4292-b74b-477961d43a44: laudantium qui consequatur
flutter: index: 14; c5c22b16-4d74-4708-bdcf-d46f5b6f82de: amet ex quia
flutter: index: 15; dcda0448-9de7-4aa7-bde1-0f5f51fc80cc: consectetur rem quisquam
flutter: index: 16; 8fa42f72-1580-4ff7-b9c5-9118a24ab339: eos dolor est
flutter: index: 17; 98aaf0fd-a8cd-4b71-ab08-13d4cb877523: eius quaerat animi
flutter: index: 18; 7d8b18b0-99c0-4a92-b1d4-d9a6fb2b8240: temporibus quia eum
flutter: index: 19; 857041a2-4a62-48b0-b39f-6661aa0d8d78: totam doloribus ea
flutter: loading offset: 1
flutter: vendor list length: 40
flutter: index: 9; e46dc760-ea55-4558-8d6d-281acdf09fa7: id et et
flutter: index: 10; 89d9c9d7-d098-4075-b64c-606eac23dc31: praesentium nisi excepturi
flutter: index: 11; 7a3e3733-bb0d-4a0e-8c98-858273a4ec70: explicabo optio et
flutter: index: 12; 27417b84-86e9-4410-b7d1-1d4df023960f: sit et explicabo
flutter: index: 13; bcdcbf0e-48ed-4292-b74b-477961d43a44: laudantium qui consequatur
flutter: index: 14; c5c22b16-4d74-4708-bdcf-d46f5b6f82de: amet ex quia
flutter: index: 15; dcda0448-9de7-4aa7-bde1-0f5f51fc80cc: consectetur rem quisquam
flutter: index: 16; 8fa42f72-1580-4ff7-b9c5-9118a24ab339: eos dolor est
flutter: index: 17; 98aaf0fd-a8cd-4b71-ab08-13d4cb877523: eius quaerat animi
flutter: index: 18; 7d8b18b0-99c0-4a92-b1d4-d9a6fb2b8240: temporibus quia eum
flutter: index: 19; 857041a2-4a62-48b0-b39f-6661aa0d8d78: totam doloribus ea
flutter: index: 20; 329d86ce-5c68-4017-8eae-42cc1d9ab9f4: et sed et
flutter: index: 21; d5cbb21f-f634-4e6c-8673-ae42e55c7e44: a ut omnis
flutter: index: 22; 383d669a-b5d0-4bf6-9004-115ae38d31dc: possimus voluptas et
flutter: index: 23; 14840686-4e01-4ad9-ae1e-b6a54a197c57: et quaerat neque
flutter: index: 24; d40e8abd-66aa-49e1-bdca-eddf4d4b8a9e: eum libero ut
flutter: index: 25; 7b388a60-3c5e-4ed1-98a8-853386a94ec4: adipisci ad omnis
flutter: index: 26; 472ba950-088d-4a6c-ae9a-2a5967381745: enim voluptatem voluptates
flutter: index: 27; 2589add9-0bd9-406b-96c5-68b80af6c50b: sint ratione qui
flutter: index: 28; b0d60699-bb63-42bf-9390-cc855a45389b: amet repellendus dolorum
flutter: index: 29; dea58853-1f9b-40fd-b685-e17dc5beaed9: libero nihil repudiandae
flutter: index: 30; d9777fca-4603-4bb0-9139-783666b2eea9: laboriosam ea hic
flutter: index: 31; f83225ac-95f4-4172-a295-fc2a6c8f8d5c: dolorum id beatae
flutter: index: 32; 7a358d81-3ac3-4029-a365-08e08a47aa87: sint ullam voluptate
flutter: index: 33; a7a2e7be-f609-444c-a0d1-da3840215014: eum omnis velit
flutter: index: 34; 7010ff48-1dfc-4c5d-8be0-eaec1890b279: tempore voluptates ea
flutter: index: 35; be6633f8-3248-4977-ad21-aef8f8b34d5c: sed tempora in
flutter: index: 36; dbe1a887-9380-4d62-8ec6-6240224b8e78: quasi occaecati at
flutter: index: 37; a0f1f418-7c33-4032-8ea4-2f12b4e052bc: dolores in voluptatem
flutter: index: 38; 8d99f6a1-efd4-4cf6-b6b4-22f6e5e6a604: sed eveniet est
flutter: index: 39; aba591ff-57b1-4e1b-8436-7a5881776196: et nemo exercitationem
flutter: loading offset: 2
flutter: vendor list length: 60
flutter: index: 29; dea58853-1f9b-40fd-b685-e17dc5beaed9: libero nihil repudiandae
flutter: index: 30; d9777fca-4603-4bb0-9139-783666b2eea9: laboriosam ea hic
flutter: index: 31; f83225ac-95f4-4172-a295-fc2a6c8f8d5c: dolorum id beatae
flutter: index: 32; 7a358d81-3ac3-4029-a365-08e08a47aa87: sint ullam voluptate
flutter: index: 33; a7a2e7be-f609-444c-a0d1-da3840215014: eum omnis velit
flutter: index: 34; 7010ff48-1dfc-4c5d-8be0-eaec1890b279: tempore voluptates ea
flutter: index: 35; be6633f8-3248-4977-ad21-aef8f8b34d5c: sed tempora in
flutter: index: 36; dbe1a887-9380-4d62-8ec6-6240224b8e78: quasi occaecati at
flutter: index: 37; a0f1f418-7c33-4032-8ea4-2f12b4e052bc: dolores in voluptatem
flutter: index: 38; 8d99f6a1-efd4-4cf6-b6b4-22f6e5e6a604: sed eveniet est
flutter: index: 39; aba591ff-57b1-4e1b-8436-7a5881776196: et nemo exercitationem
flutter: index: 40; 48aeaa6b-79f0-43b2-b5cf-0a594f834846: temporibus quos eos
flutter: index: 41; 1ab7cef0-56fa-4d3c-80eb-026b5cb5fbd8: fugiat perferendis aut
flutter: index: 42; 82be954f-8ed4-4f4b-bf78-dd69262bcd26: voluptas velit id
flutter: index: 43; a999d0b5-3ffc-49cc-9458-7b34c3760048: dicta repellat dolor
flutter: index: 44; 8c0e370e-f221-4340-ad87-11e80bd6a753: molestiae ab necessitatibus
flutter: index: 45; fd3bde7b-2042-4784-b2d4-667833ee7057: excepturi inventore totam
flutter: index: 46; 1d7d9814-2ccd-418e-911a-9382f12f33be: reiciendis expedita ipsam
flutter: index: 47; cd884acd-2879-40dd-887f-8f3b05ad3479: rem in et
flutter: index: 48; f217c084-9aa7-4207-bdcd-819dde512fa5: et dolor dolorem
flutter: index: 49; 13fc90ac-54a6-4ed1-9a58-4a3c102e2a14: veritatis vitae qui

When I am loading the next page data, the list view builder is building the widget from the half index of the last page.

Please help, thanks.

DannyChowGitHub avatar Aug 19 '19 11:08 DannyChowGitHub

Try not wrapping the addAll method with setState.

CaiJingLong avatar Aug 20 '19 01:08 CaiJingLong

@CaiJingLong But it still in the issue, I think it's not your package issue. When implement via the ScrollController, the issue still exist. Thank u.

DannyChowGitHub avatar Aug 20 '19 08:08 DannyChowGitHub