networkFilesContent top-level property

Map<String, String> networkFilesContent
getter/setter pair

Implementation

Map<String, String> networkFilesContent = {
  'api_constants': '''
class ApiConstants {
  const ApiConstants._();
  static const String apiBaseUrl = 'https://api.example.com/';
}
class ApiErrors {}
''',

  //-------------------------------------------------------------------------------------------------------------------------
  'api_error_handler': '''
import 'package:dio/dio.dart';
import 'api_error_model.dart';

class ApiErrorHandler {
  static ApiErrorModel handleError(dynamic error) {
    // if (error is DioException) {
    //   switch (error.type) {
    //     case DioExceptionType.connectionTimeout:
    //       return ApiErrorModel(message: "connection timeout, please try again");
    //     case DioExceptionType.sendTimeout:
    //       return ApiErrorModel(message: "");
    //     case DioExceptionType.receiveTimeout:
    //       return ApiErrorModel(message: "timeout, please try again");
    //     case DioExceptionType.badResponse:
    //       return ApiErrorModel.fromJson(error.response?.data);
    //     case DioExceptionType.cancel:
    //       return ApiErrorModel(message: "error cancelled");
    //     case DioExceptionType.connectionError:
    //     case DioExceptionType.badCertificate:
    //       return ApiErrorModel(message: "bad certificate, please try again");
    //     case DioExceptionType.unknown:
    //       return ApiErrorModel(message: "unknown error, please try again");
    //   }
    // } else {
    //   return ApiErrorModel(message: "error, please try again");
    // }

    return ApiErrorModel(message: "error, please try again");
  }
}
''',

  //-------------------------------------------------------------------------------------------------------------------------
  'api_result': '''
import 'package:freezed_annotation/freezed_annotation.dart';
import 'api_error_model.dart';
part 'api_result.freezed.dart';
@Freezed()
abstract class ApiResult<T> with _\$ApiResult<T> {
  const factory ApiResult.success(T data) = Success<T>;
  const factory ApiResult.failure(ApiErrorModel apiErrorModel) = Failure<T>;
}
''',
  //-------------------------------------------------------------------------------------------------------------------------
  'api_error_model': '''
import 'package:json_annotation/json_annotation.dart';
part 'api_error_model.g.dart';

@JsonSerializable()
class ApiErrorModel {
    final String message;
    ApiErrorModel({required this.message});

    factory ApiErrorModel.fromJson(Map<String, dynamic> json) => _\$ApiErrorModelFromJson(json);
}
''',
  //-------------------------------------------------------------------------------------------------------------------------
  'dio_factory': '''
import 'package:dio/dio.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';

class DioFactory {
  DioFactory._();
  static Dio? dio;

  static Future<Dio> getDio() async {
    Duration timeOut = const Duration(seconds: 30);

    if (dio == null) {
      dio = Dio();
      dio!
        ..options.connectTimeout = timeOut
        ..options.receiveTimeout = timeOut;

      await addDioHeaders();
      addDioInterceptor();
      return dio!;
    } else {
      return dio!;
    }
  }

  static Future<void> addDioHeaders() async {
    dio?.options.headers = {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
      // 'Authorization':'Bearer \${await SharedPrefHelper.getSecuredString(SharedPrefKeys.userToken)}',
    };
  }

  static void addDioInterceptor() {
    dio?.interceptors.add(
      PrettyDioLogger(
        requestBody: true,
        requestHeader: true,
        responseHeader: true,
        error: true,
      ),
    );
  }
}

''',
};