Documentation

SDK Integration

Flutter/Dart and React Native/JavaScript SDK examples with auth, products, cart, and checkout

Last updated: Feb 09, 2026

SDK Integration

Flutter/Dart Example

import 'package:http/http.dart' as http;
import 'dart:convert';

class CartxisApi {
  static const String baseUrl = 'https://your-domain/api/v1';
  String? _token;

  Map<String, String> get _headers => {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    if (_token != null) 'Authorization': 'Bearer $_token',
  };

  void setToken(String token) => _token = token;

  // Login
  Future<Map<String, dynamic>> login(String email, String password) async {
    final response = await http.post(
      Uri.parse('$baseUrl/auth/login'),
      headers: _headers,
      body: jsonEncode({'email': email, 'password': password}),
    );

    final data = jsonDecode(response.body);
    if (data['success']) {
      setToken(data['data']['token']);
    }
    return data;
  }

  // Get Products
  Future<List<dynamic>> getProducts({
    int page = 1,
    int perPage = 20,
    String? search,
    int? categoryId,
  }) async {
    final params = {
      'page': page.toString(),
      'per_page': perPage.toString(),
      if (search != null) 'search': search,
      if (categoryId != null) 'category_id': categoryId.toString(),
    };

    final uri = Uri.parse('$baseUrl/products').replace(queryParameters: params);
    final response = await http.get(uri, headers: _headers);

    final data = jsonDecode(response.body);
    return data['data'];
  }

  // Add to Cart
  Future<void> addToCart(int productId, int quantity) async {
    await http.post(
      Uri.parse('$baseUrl/cart/add'),
      headers: _headers,
      body: jsonEncode({
        'product_id': productId,
        'quantity': quantity,
      }),
    );
  }

  // Place Order
  Future<Map<String, dynamic>> placeOrder({
    required String paymentMethod,
    Map<String, dynamic>? paymentData,
  }) async {
    final response = await http.post(
      Uri.parse('$baseUrl/checkout/place-order'),
      headers: _headers,
      body: jsonEncode({
        'payment_data': paymentData,
      }),
    );
    return jsonDecode(response.body);
  }
}

React Native / JavaScript Example

const API_BASE = 'https://your-domain/api/v1';

class CartxisApi {
  constructor() {
    this.token = null;
  }

  setToken(token) {
    this.token = token;
  }

  async request(endpoint, options = {}) {
    const response = await fetch(`${API_BASE}${endpoint}`, {
      ...options,
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        ...(this.token && { 'Authorization': `Bearer ${this.token}` }),
        ...options.headers,
      },
    });
    return response.json();
  }

  // Auth
  async login(email, password) {
    const result = await this.request('/auth/login', {
      method: 'POST',
      body: JSON.stringify({ email, password }),
    });
    if (result.success) {
      this.setToken(result.data.token);
    }
    return result;
  }

  // Products
  async getProducts(params = {}) {
    const query = new URLSearchParams(params).toString();
    return this.request(`/products?${query}`);
  }

  // Cart
  async addToCart(productId, quantity) {
    return this.request('/cart/add', {
      method: 'POST',
      body: JSON.stringify({ product_id: productId, quantity }),
    });
  }
}

export default new CartxisApi();