Overview

flutter_feature_network is a library designed to simplify and enhance network operations in Flutter applications. This library provides a suite of tools and methods to manage network requests efficiently, including Dio client setup, logging, request identification, and SSL security.

Methods

Get Dio Client

Generate Dio Client For HTTP Transaction.

final dioClient = FeatureNetworkRepositoryImpl().getDioClient();
// or
final dioClient = FlutterFeatureNetwork.getDioClient();
Parameter Name Type Required Description
receiveTimeout Duration no The maximum amount of time the client will wait to receive data from the server.
connectTimeout Duration no The maximum amount of time allowed for the client to establish a connection to the server.
sendTimeout Duration no The maximum amount of time allowed for the client to send the request data to the server.
baseUrl String no The base URL for all requests made by this client.
headers String no The default headers to be included in every request.
interceptors List no A list of interceptors that will be added to the Dio client for request/response modifications.
trustedCertificateBytes List no A list of bytes representing trusted certificates for SSL pinning.
Only one of trustedCertificateBytes or allowedFingerprints allowed.
allowedFingerprints List no A list of allowed SSL certificate SHA fingerprints for secure connections.
Only one of trustedCertificateBytes or allowedFingerprints allowed.

Is Connection Secure

This is will checked if the connection using certificate is secure.

if connection is secure, it will return true, otherwise it will return false.

final isSecure = FeatureNetworkRepositoryImpl().isConnectionSecure(
  serverUrl: 'https://jsonplaceholder.typicode.com/',
  sha: SHA.SHA_256,
  allowedSHAFingerprints: [
    '14f9996f9481eac7f9c005f6954c2f032d8e9cb13d4440ebed35f14bed22c43f',
  ],
);
// or
final isSecure = FlutterFeatureNetwork.isConnectionSecure(
  serverUrl: 'https://jsonplaceholder.typicode.com/',
  sha: SHA.SHA_256,
  allowedSHAFingerprints: [
    '14f9996f9481eac7f9c005f6954c2f032d8e9cb13d4440ebed35f14bed22c43f',
  ],
);
Parameter Name Type Required Description
baseUrl String true The URL of the server to check the connection against.
sha SHA true The hashing algorithm used (e.g., SHA_256) for the certificate fingerprint.
allowedFingerprints List true A list of allowed SHA fingerprints for SSL certificates.

Check HttpCertificatePinning

This is will checked if the connection using certificate is secure.

FeatureNetworkRepositoryImpl().checkHttpCertificatePinning(
  serverUrl: 'https://jsonplaceholder.typicode.com/',
  sha: SHA.SHA_256,
  allowedSHAFingerprints: [
    '14f9996f9481eac7f9c005f6954c2f032d8e9cb13d4440ebed35f14bed22c43f',
  ],
);
// or
FlutterFeatureNetwork.checkHttpCertificatePinning(
  serverUrl: 'https://jsonplaceholder.typicode.com/',
  sha: SHA.SHA_256,
  allowedSHAFingerprints: [
    '14f9996f9481eac7f9c005f6954c2f032d8e9cb13d4440ebed35f14bed22c43f',
  ],
);
Parameter Name Type Required Description
baseUrl String true The URL of the server to check the connection against.
sha SHA true The hashing algorithm used (e.g., SHA_256) for the certificate fingerprint.
allowedFingerprints List true A list of allowed SHA fingerprints for SSL certificates.

Plugin FlutterFeatureNetwork

Get Http Certificate Bytes By Asset

This is will checked if the connection using certificate is secure.

final certificateBytes = FlutterFeatureNetwork.getCertificateBytesFromAsset(assethPath: 'asset/certificate.pem');
Parameter Name Type Required Description
assethPath String true The location of asset path.

Others

Alice

Alice is an HTTP Inspector tool for Flutter which helps debugging http requests. It catches and stores http requests and responses, which can be viewed via simple UI. It's forked from: https://pub.dev/packages/alice

// Setup Alice
final alice = Alice(showNotification: true, showInspectorOnShake: true);
// Put in Material App
@override
Widget build(BuildContext context) {
  return MaterialApp(
    navigatorKey: alice.getNavigatorKey(),
    title: 'Flutter Feature Network',
    theme: ThemeData(
      colorScheme: ColorScheme.fromSeed(seedColor: Colors.blueAccent),
      useMaterial3: true,
    ),
    home: const MainPage(),
  );
}

Logger Interceptor

Logger interceptor is an interceptor for debugging request & response in terminal. It help developer to debugging HTTP.

final dio = FeatureNetworkRepositoryImpl().getDioClient(
  // ...
  interceptors: [
    LoggerInterceptor(),
  ],
  // ...
);
// or
final dio = FlutterFeatureNetwork.getDioClient(
  // ...
  interceptors: [
    LoggerInterceptor(),
  ],
  // ...
);