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
// ignore_for_file: avoid_positional_boolean_parameters
import 'dart:convert';
import 'package:hooks_riverpod/hooks_riverpod.dart';
// Services
import '../../features/notifications/notifications.dart';
import '../networking/models/token_model.codegen.dart';
import 'key_value_storage_base.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import '../../config/logging/logging.dart';
/// Base class containing a unified API for key-value pairs' storage.
/// This class provides low level methods for storing:
@arafaysaleem
arafaysaleem / server_analytics_client.dart
Created December 23, 2024 07:45
Backend Analytics Service for Flutter
import 'dart:async';
// Networking
import '../networking/networking.dart';
// Monitoring
import 'analytics_client_base.dart';
class ServerAnalyticsClient implements AnalyticsClientBase {
final ApiService _apiService;
@arafaysaleem
arafaysaleem / posthog_analytics_client.dart
Created December 23, 2024 07:44
PostHog Analytics Service for Flutter
import 'package:posthog_flutter/posthog_flutter.dart';
// Monitoring
import 'analytics_client_base.dart';
class PosthogAnalyticsClient implements AnalyticsClientBase {
static final Posthog _posthog = Posthog();
const PosthogAnalyticsClient();
@arafaysaleem
arafaysaleem / logger_analytics_client.dart
Created December 23, 2024 07:43
Logger Analytics Service for Flutter
import 'dart:async';
// Config
import '../../config/config.dart';
// Monitoring
import 'analytics_client_base.dart';
class LoggerAnalyticsClient implements AnalyticsClientBase {
const LoggerAnalyticsClient();
@arafaysaleem
arafaysaleem / analytics_service.dart
Created December 23, 2024 07:43
Analytics Service for Flutter
// Local
import '../../config/config.dart';
import '../local/local.dart';
// Analytics
import 'analytics_client_base.dart';
import 'logger_analytics_client.dart';
import 'posthog_analytics_client.dart';
class AnalyticsService implements AnalyticsClientBase {
@arafaysaleem
arafaysaleem / analytics_client_base.dart
Last active December 23, 2024 07:45
Analytics Base Client for Flutter
abstract class AnalyticsClientBase {
/// Toggles the collection of analytics data.
Future<void> toggleAnalyticsCollection(bool enabled);
/// Identifies the user with the given [userId].
Future<void> identifyUser({
required String userId,
required String email,
required String role,
});
@arafaysaleem
arafaysaleem / key_value_storage_base.dart
Last active April 19, 2024 04:50
Key Value Storage Service
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// Base class containing a unified API for key-value pairs' storage.
/// This class provides low level methods for storing:
/// - Sensitive keys using [FlutterSecureStorage]
@arafaysaleem
arafaysaleem / custom_form_field.dart
Created April 8, 2024 10:34
Custom form field for validating any widget in flutter
import 'package:flutter/material.dart';
// Helpers
import '../../helpers/constants/constants.dart';
// Widgets
import 'custom_value_listener.dart';
typedef OnChangedCallback<T> = void Function(T?);
typedef OnValidateCallback<T> = String? Function(T?)?;
@arafaysaleem
arafaysaleem / paywall_gate.dart
Last active March 24, 2024 12:52
Reusable PaywallGate for Flutter RevenueCat
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lottie/lottie.dart';
import 'package:purchases_ui_flutter/purchases_ui_flutter.dart';
// Config
import '../../../config/config.dart';
// Helpers
import '../../../helpers/constants/constants.dart';