synor/sdk/flutter/README.md
Gulshan Yadav 162227dc71 docs(sdk): add comprehensive documentation for all 12 SDKs
Add README.md documentation for:
- Main SDK overview with quick start guides
- JavaScript/TypeScript SDK
- Python SDK
- Go SDK
- Rust SDK
- Java SDK
- Kotlin SDK
- Swift SDK
- Flutter/Dart SDK
- C SDK
- C++ SDK
- C#/.NET SDK
- Ruby SDK

Each README includes:
- Installation instructions
- Quick start examples
- Tensor operations
- Matrix operations (matmul, conv2d, attention)
- LLM inference (single and streaming)
- Configuration options
- Error handling
- Type definitions
2026-01-11 18:05:03 +05:30

4.6 KiB

Synor Compute SDK for Flutter/Dart

Access distributed heterogeneous compute at 90% cost reduction.

Installation

Add to pubspec.yaml:

dependencies:
  synor_compute: ^0.1.0

Then run:

flutter pub get

Quick Start

import 'package:synor_compute/synor_compute.dart';

void main() async {
  final client = SynorCompute('your-api-key');

  // Matrix multiplication on GPU
  final a = Tensor.random([512, 512]);
  final b = Tensor.random([512, 512]);

  final result = await client.matmul(a, b,
    precision: Precision.fp16,
    processor: ProcessorType.gpu,
  );

  if (result.isSuccess) {
    print('Time: ${result.executionTimeMs}ms');
    print('Cost: \$${result.cost}');
  }
}

Tensor Operations

// Create tensors
final zeros = Tensor.zeros([3, 3]);
final ones = Tensor.ones([2, 2]);
final random = Tensor.random([10, 10]);
final randn = Tensor.randn([100]);
final eye = Tensor.eye(3);

// From list
final data = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0];
final tensor = Tensor(data, shape: [2, 3]);

// From typed data (efficient)
final float32List = Float32List.fromList(data);
final tensor2 = Tensor.fromTypedData(float32List, shape: [2, 3]);

// Operations
final reshaped = tensor.reshape([3, 2]);
final transposed = tensor.transpose();

// Math
final mean = tensor.mean();
final sum = tensor.sum();
final std = tensor.std();

Matrix Operations

// Matrix multiplication
final result = await client.matmul(a, b,
  precision: Precision.fp16,
  processor: ProcessorType.gpu,
  strategy: BalancingStrategy.speed,
);

// 2D Convolution
final conv = await client.conv2d(input, kernel,
  stride: (1, 1),
  padding: (1, 1),
);

// Attention
final attention = await client.attention(query, key, value,
  numHeads: 8,
  flash: true,
);

LLM Inference

// Single response
final response = await client.inference(
  'llama-3-70b',
  'Explain quantum computing',
  maxTokens: 512,
  temperature: 0.7,
);
print(response.result);

// Streaming
await for (final chunk in client.inferenceStream(
  'llama-3-70b',
  'Write a poem',
)) {
  stdout.write(chunk);
}

Configuration

final config = SynorConfig(
  apiKey: 'your-api-key',
  baseUrl: 'https://api.synor.io/compute/v1',
  defaultProcessor: ProcessorType.gpu,
  defaultPrecision: Precision.fp16,
  timeout: Duration(seconds: 30),
  debug: true,
);

final client = SynorCompute.withConfig(config);

Flutter Widget Integration

import 'package:flutter/material.dart';
import 'package:synor_compute/synor_compute.dart';

class ComputeWidget extends StatefulWidget {
  @override
  State<ComputeWidget> createState() => _ComputeWidgetState();
}

class _ComputeWidgetState extends State<ComputeWidget> {
  final client = SynorCompute('your-api-key');
  String? result;
  bool isLoading = false;

  Future<void> compute() async {
    setState(() => isLoading = true);
    try {
      final response = await client.inference(
        'llama-3-70b',
        'Hello',
      );
      setState(() => result = response.result);
    } catch (e) {
      setState(() => result = 'Error: $e');
    } finally {
      setState(() => isLoading = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        if (isLoading)
          CircularProgressIndicator()
        else if (result != null)
          Text(result!),
        ElevatedButton(
          onPressed: compute,
          child: Text('Compute'),
        ),
      ],
    );
  }
}

Riverpod Integration

import 'package:flutter_riverpod/flutter_riverpod.dart';

final synorProvider = Provider((ref) => SynorCompute('your-api-key'));

final inferenceProvider = FutureProvider.family<String, String>((ref, prompt) async {
  final client = ref.watch(synorProvider);
  final result = await client.inference('llama-3-70b', prompt);
  return result.result ?? '';
});

Error Handling

try {
  final result = await client.matmul(a, b);
} on SynorException catch (e) {
  print('API Error: ${e.message} (${e.statusCode})');
} catch (e) {
  print('Unexpected error: $e');
}

Types

// Processor types
enum ProcessorType {
  cpu, gpu, tpu, npu, lpu, fpga, auto
}

// Precision
enum Precision {
  fp64, fp32, fp16, bf16, int8, int4
}

// Job status
enum JobStatus {
  pending, running, completed, failed, cancelled
}

// Balancing strategy
enum BalancingStrategy {
  speed, cost, energy, latency, balanced
}

Platform Support

Platform Status
Android Supported
iOS Supported
Web Supported
macOS Supported
Windows Supported
Linux Supported

Testing

flutter test

License

MIT