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
150
pub points
44%
popularity
screenshot

Publisher

verified publisherstarproxima.dev

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

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dio, meta

More

Packages that depend on api_wrap