Skip to content

Instantly share code, notes, and snippets.

View arafaysaleem's full-sized avatar
🏠
Working from home

Abdur Rafay Saleem arafaysaleem

🏠
Working from home
View GitHub Profile
@arafaysaleem
arafaysaleem / custom_text.dart
Last active December 25, 2024 10:21
Custom Text Wrapper For Flutter
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
// Helpers
import '../../helpers/constants/constants.dart';
import '../../helpers/extensions/extensions.dart';
class CustomText extends StatelessWidget {
final String text;
final TextAlign? textAlign;
@arafaysaleem
arafaysaleem / refresh_token_interceptor.dart
Created July 4, 2022 08:03
Refresh Token Interceptor For Network Layer
// ignore_for_file: deprecated_member_use
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// Providers
import '../../../features/all_providers.dart';
import '../../../features/auth/providers/auth_provider.dart';
@arafaysaleem
arafaysaleem / logging_interceptor.dart
Created July 4, 2022 08:01
Logging Interceptor For Network Layer
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:dio/dio.dart';
//helpers
import '../../../helpers/typedefs.dart';
/// A class that intercepts network requests for logging purposes only. This is
/// the second interceptor in case of both request and response.
@arafaysaleem
arafaysaleem / api_interceptor.dart
Created July 4, 2022 08:00
Api Interceptor For Network Layer
import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// Providers
import '../../../features/all_providers.dart';
/// A class that holds intercepting logic for API related requests. This is
/// the first interceptor in case of both request and response.
///
/// Primary purpose is to handle token injection and response success validation
@arafaysaleem
arafaysaleem / api_service.dart
Created July 4, 2022 07:46
Api Service Class For Network Layer
import 'package:dio/dio.dart';
import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
// Exceptions
import './custom_exception.dart';
// Services
import './api_interface.dart';
import './dio_service.dart';
@arafaysaleem
arafaysaleem / api_endpoint.dart
Last active July 3, 2022 18:38
Api Endpoint Class For Network Layer
// ignore_for_file: constant_identifier_names
// DO NOT USE 'dartfmt' on this file for formatting
import 'package:flutter/material.dart';
// Config
import '../../config/config.dart';
/// A utility class for getting paths for API endpoints.
/// This class has no constructor and all methods are `static`.
@arafaysaleem
arafaysaleem / response_model.dart
Created July 3, 2022 17:52
Response Model for Network Layer
// Helpers
import '../../helpers/constants/app_utils.dart';
import '../../helpers/typedefs.dart';
class ResponseModel<T> {
final _ResponseHeadersModel headers;
final T body;
const ResponseModel({
required this.headers,
@arafaysaleem
arafaysaleem / custom_exception.dart
Last active July 3, 2022 17:44
Custom Exception for Networking Layer
// ignore_for_file: constant_identifier_names
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
/// An enum that holds names for our custom exceptions.
enum _ExceptionType {
/// The exception for an expired bearer token.
TokenExpiredException,
/// The exception for a prematurely cancelled request.
@arafaysaleem
arafaysaleem / dio_service.dart
Last active July 3, 2022 15:14
Generic Dio Service Wrapper
import 'dart:async';
import 'package:dio/dio.dart';
import 'package:dio_cache_interceptor/dio_cache_interceptor.dart';
// Exceptions
import './custom_exception.dart';
// Helpers
import '../../helpers/typedefs.dart';