flutter_network_layer_core 0.2.0 copy "flutter_network_layer_core: ^0.2.0" to clipboard
flutter_network_layer_core: ^0.2.0 copied to clipboard

Core library for flutter_network_layer. Includes base classes of flutter_network_layer project.

flutter_network_layer_core The Core Package Of The flutter_network_layer. #

Provides the frame for following implementations:

Usage #

Recommended to use with above implementations. However, you can implement your own network layer.

  • Create a INetworkInvoker implementation like that. This is already implemented in mentioned implementation packages.
// Network Invoker Implementation

import 'package:flutter_network_layer_core/flutter_network_layer_core.dart';

class NetworkInvoker implements INetworkInvoker {
  @override
  Future<void> init(String baseUrl) async {
    // Create your network client here.
  }

  @override
  Future<ResponseResult<T>> request<T extends ResponseModel>(RequestCommand<T> request) async {
    // Process your request with the network client.
  }
}
  • Create your own response models like that. These models are specific to api response so they need to be implemented in product level.
import 'package:flutter_network_layer_core/flutter_network_layer_core.dart';

class ResponseExample extends JsonResponseModel {
  final String id;
  final String name;
  final int age;

  const ResponseExample({
    required this.id,
    required this.name,
    required this.age,
  });

  const ResponseExample.empty()
      : id = '',
        name = '',
        age = 0;

  @override
  factory ResponseExample.fromJson(dynamic json) {
    if (json is! Map<String, dynamic>) {
      throw Exception('Invalid json type');
    }

    return ResponseExample(
      id: map['id'] as String,
      name: map['name'] as String,
      age: map['age'] as int,
    );
  }

  @override
  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'name': name,
      'age': age,
    };
  }
}
  • Create your own request models like that. These models are specific to api request so they need to be implemented in product level.
import 'package:flutter_network_layer_core/flutter_network_layer_core.dart';

class RequestUser implements RequestCommand<ResponseUser> {
  @override
  Map<String, dynamic> get data => const {};

  @override
  Map<String, dynamic> get headers => const {};

  @override
  HttpRequestMethod get method => HttpRequestMethod.get;

  @override
  OnProgressCallback? onReceiveProgressUpdate;

  @override
  OnProgressCallback? onSendProgressUpdate;

  @override
  String get path => '/example';

  @override
  RequestPayloadType get payloadType => RequestPayloadType.json;

  @override
  ResponseExample get sampleModel => const ResponseExample.empty();
}

Or, the RequestCommand can be extended. Default values of the fields of the RequestCommand are already implemented in this method. But, you can override them if you need.

import 'package:flutter_network_layer_core/flutter_network_layer_core.dart';

class RequestUser extends RequestCommand<ResponseUser> {
  @override
  String get path => '/example';

  @override
  ResponseExample get sampleModel => const ResponseExample.empty();
}

0
likes
0
points
301
downloads

Publisher

verified publisherfemrek.me

Weekly Downloads

Core library for flutter_network_layer. Includes base classes of flutter_network_layer project.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on flutter_network_layer_core