status_polling 1.0.2 copy "status_polling: ^1.0.2" to clipboard
status_polling: ^1.0.2 copied to clipboard

A Flutter widget that provides status polling functionality with visibility and scroll detection to optimize refresh operations.

example/status_polling_example.dart

import 'package:flutter/material.dart';
import 'package:status_polling/status_polling.dart';

class AttentionPageExample extends StatefulWidget {
  const AttentionPageExample({super.key});

  @override
  State<AttentionPageExample> createState() => _AttentionPageExampleState();
}

class _AttentionPageExampleState extends State<AttentionPageExample> {
  final String _tag = "AttentionPageExample";

  final ScrollController _controller = ScrollController();

  final List<UserInfo> _dataList = [];

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

  @override
  Widget build(BuildContext context) {
    var itemExtent = 80.0;
    return StatusPollingWidget(
      scrollController: _controller,
      onRefreshStatus: (scrollOffset) {
        if (!_controller.hasClients) {
          return;
        }
        var viewportDimension = _controller.position.viewportDimension;
        var items = List<UserInfo>.from(_dataList);
        // 获取可见的item列表
        // var visibleItems = getVisibleListRange<UserInfo>(
        //     scrollOffset, itemExtent, viewportDimension, items);
        // var visibleIds = visibleItems.items
        //     .map((e) => e.userId)
        //     .where((element) => element != null && element.isNotEmpty)
        //     .cast<String>()
        //     .toList();
        // 调用接口更新状态
        // ...
      },
      child: RefreshIndicator(
        onRefresh: () {
          // 模拟下拉刷新列表数据
          return Future.delayed(Duration(seconds: 1));
        },
        child: ListView.builder(
          controller: _controller,
          itemExtent: itemExtent,
          itemCount: _dataList.length,
          itemBuilder: (context, index) {
            return Row(
              children: [
                Text("${_dataList[index].userId}"),
                Text("${_dataList[index].userName}"),
              ],
            );
          },
        ),
      ),
    );
  }
}

class UserInfo {
  String? userId;
  String? userName;
}
0
likes
160
points
8
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter widget that provides status polling functionality with visibility and scroll detection to optimize refresh operations.

Repository (GitHub)

License

MIT (license)

Dependencies

flutter, scroll_detector, visibility_detector_widget

More

Packages that depend on status_polling