fluent_networking 0.9.0 copy "fluent_networking: ^0.9.0" to clipboard
fluent_networking: ^0.9.0 copied to clipboard

Package that provides a simple way to make http requests

fluent_networking #

Package that provides a simple way to make http requests

Getting Started #

Add dependencies #

fluent_networking: ^0.9.0

Create networking config #

Configure your base URL, global headers, and enable built-in interceptors like Cache, Retry, and Logging.

class ApiConfig extends NetworkingConfig {
  @override
  String get baseUrl => "https://pokeapi.co/api/v2";

  @override
  Map<String, String> get headers => {
    'Content-Type': 'application/json',
  };

  @override
  List<Interceptor> get interceptors => [
    // Automatically retry failed requests (3 times by default)
    NetworkingRetryInterceptor(),
    // Cache responses locally
    NetworkingCacheInterceptor(),
    // Log requests and responses (with sensitive data redacting)
    NetworkingLogInterceptor(),
  ];
}

Build module #

void main() async {
  await Fluent.build([
    NetworkingModule(config: ApiConfig()),
  ]);

  runApp(const MainApp());
}

Use it #

The API uses ResponseResult to force you to handle both success and failure cases safely.

GET request

final networkingApi = Fluent.get<NetworkingApi>();

final result = await networkingApi.get<Map<String, dynamic>>(
    "/pokemon/pikachu",
    queryParams: {"include_details": "true"},
);

if (result is Success) {
    print("Data: ${result.data}");
}

POST request

final result = await networkingApi.post<Map<String, dynamic>>(
    "/orders",
    data: {"product_id": 1, "quantity": 10},
    headers: {"X-Custom-Header": "Value"},
);

Logging & Security #

The package includes a NetworkingLogInterceptor that automatically formats and logs HTTP requests and responses. It also includes built-in security features to protect sensitive data:

  • Sensitive Key Redacting: Keys like password, token, secret, api_key, email, credit_card, and phone_number are automatically redacted in the logs.
  • FormData Sanitization: Sensitive fields in multipart/form-data requests are also identified and masked.
  • Production Safety: Logging is automatically optimized for production environments.

Custom Interceptors #

You can easily create your own interceptors by extending NetworkingInterceptor:

class AuthInterceptor extends NetworkingInterceptor {
  @override
  void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
    final token = myAuthService.getToken();
    options.headers['Authorization'] = 'Bearer $token';
    handler.next(options);
  }
}

Example #

1
likes
160
points
666
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Package that provides a simple way to make http requests

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

dio, equatable, fluent_logger_api, fluent_networking_api, fluent_sdk

More

Packages that depend on fluent_networking