Skip to main content

flutter_request_scheduler 1.0.0 copy "flutter_request_scheduler: ^1.0.0" to clipboard
flutter_request_scheduler: ^1.0.0 copied to clipboard

Production-ready load balancer for Flutter/Dart. Controls concurrency, queues, prioritizes, deduplicates, retries, and debounces API calls to prevent UI lag, frame drops, and freezing under heavy network load.

example/main.dart

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


void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) => MaterialApp(
        home: RequestSchedulerDemo(),
      );
}

class RequestSchedulerDemo extends StatefulWidget {
  @override
  State<RequestSchedulerDemo> createState() => _RequestSchedulerDemoState();
}

class _RequestSchedulerDemoState extends State<RequestSchedulerDemo> {
  final lb = RequestScheduler(maxConcurrent: 4, enableLogging: true);
  int _completed = 0;

  Future<String> _mockApiCall(int id) async {
    await Future.delayed(Duration(milliseconds: 300 + id * 50));
    return 'Result $id';
  }

  void _fireHeavyLoad() {
    for (int i = 0; i < 30; i++) {
      lb.schedule(
        () => _mockApiCall(i),
        priority: i % 5 == 0 ? Priority.high : Priority.normal,
        deduplicationKey: i < 10 ? 'dedup_$i' : null,
      ).future.then((_) {
        setState(() => _completed++);
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('flutter_load_balancer Demo')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Completed: $_completed', style: Theme.of(context).textTheme.headlineMedium),
            const SizedBox(height: 40),
            ElevatedButton(
              onPressed: _fireHeavyLoad,
              child: const Text('FIRE 30 API CALLS'),
            ),
            const SizedBox(height: 20),
            Text('Metrics:\n${lb.metrics}'),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    lb.dispose();
    super.dispose();
  }
}
0
likes
140
points
25
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Production-ready load balancer for Flutter/Dart. Controls concurrency, queues, prioritizes, deduplicates, retries, and debounces API calls to prevent UI lag, frame drops, and freezing under heavy network load.

Repository (GitHub)

License

MIT (license)

Dependencies

collection, flutter

More

Packages that depend on flutter_request_scheduler