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

A Flutter package that simplifies API requests

example/lib/main.dart

import 'package:api_request/api_request.dart'; // Assuming ApiRequestAction is from a separate package
import 'package:api_request_builder/api_request_builder.dart'; // Your package
import 'package:flutter/material.dart';

// Define a simple response model for the example
class ExampleResponse {
  final String message;

  ExampleResponse(this.message);

  factory ExampleResponse.fromJson(Map<String, dynamic> json) {
    return ExampleResponse(json['message'] ?? 'No message');
  }
}

// Define a simple API action for the example
class ExampleAction extends ApiRequestAction<ExampleResponse> {
  @override
  RequestMethod get method => RequestMethod.GET;

  @override
  String get path => 'example'; // Mock API endpoint for demonstration

  @override
  ResponseBuilder<ExampleResponse> get responseBuilder =>
      (json) => ExampleResponse.fromJson(json);
}

void main() {
  // Configure default settings for all ApiRequestBuilder instances
  ApiRequestBuilder.config(
    enableCache: true, // Enable caching by default
    enableBackgroundFetch: false, // Disable background fetching by default
    loadingBuilder: (context) => const Center(
      child: CircularProgressIndicator(color: Colors.blue),
    ),
    errorBuilder: (context, error) => Center(
      child: Text(
        'Error occurred: $error',
        style: const TextStyle(color: Colors.red),
      ),
    ),
    emptyBuilder: (context) => const Center(
      child: Text('No data available'),
    ),
  );

  runApp(const MyApp());
}

// Main app widget
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ApiRequestBuilder Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

// Home page widget demonstrating ApiRequestBuilder usage
class MyHomePage extends StatelessWidget {
  final action = ExampleAction(); // Define the action as a constant

  MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('ApiRequestBuilder Example'),
      ),
      body: Column(
        children: [
          // Use ApiRequestBuilder to fetch and display data
          Expanded(
            child: ApiRequestBuilder(
              action: ExampleAction(),
              builder: _buildContent,
            ),
          ),
        ],
      ),
    );
  }

  // Static method to build the content based on fetched data
  static Widget _buildContent(BuildContext context, ExampleResponse data) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Center(
          child: Text(
            data.message,
            style: const TextStyle(fontSize: 18),
          ),
        ),
      ],
    );
  }
}
1
likes
130
points
14
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package that simplifies API requests

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

api_request, flutter

More

Packages that depend on api_request_builder