api_wrap 0.0.1 copy "api_wrap: ^0.0.1" to clipboard
api_wrap: ^0.0.1 copied to clipboard

Error handling, rate limiting, delay and retry in one ergonomic api

example/lib/main.dart

import 'package:example/src/buttons/debounce_button.dart';
import 'package:example/src/buttons/error_button.dart';
import 'package:example/src/buttons/retry_button.dart';
import 'package:example/src/buttons/success_button.dart';
import 'package:example/src/buttons/throttle_button.dart';
import 'package:flutter/material.dart';
import 'package:toastification/toastification.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return ToastificationWrapper(
      config: const ToastificationConfig(
        alignment: Alignment.bottomCenter,
        animationDuration: Duration(
          milliseconds: 300,
        ),
      ),
      child: MaterialApp(
        title: 'ApiWrap Demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
        ),
        home: const MyHomePage(),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    final buttons = [
      const SuccessButton(),
      const ErrorButton(),
      const DebounceButton(),
      const ThrottleButton(),
      const RetryButton(),
    ];
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('ApiWrap Example'),
      ),
      body: SingleChildScrollView(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ListView.builder(
              primary: false,
              shrinkWrap: true,
              padding: const EdgeInsets.symmetric(horizontal: 20),
              itemCount: buttons.length,
              itemBuilder: (_, index) {
                final gap = MediaQuery.sizeOf(context).height / 2;

                return Padding(
                  padding: EdgeInsets.symmetric(vertical: gap),
                  child: buttons[index],
                );
              },
            )
          ],
        ),
      ),
    );
  }
}
1
likes
140
points
22
downloads
screenshot

Publisher

verified publisherstarproxima.dev

Weekly Downloads

Error handling, rate limiting, delay and retry in one ergonomic api

Homepage
Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

dio, meta

More

Packages that depend on api_wrap