# Flutter SDK

Flutter SDK is a software development kit (SDK) used for building high-performance, high-fidelity mobile applications for iOS, Android, and the web from a single codebase.

## Features

**Simplified Security:** We make it simple for you to collect sensitive data such as device information of users.<br>

## Requirements

### **Android**

This plugin requires several changes to be able to work on Android devices. Please make sure you follow all these steps:

1. Use Android 6.0 (API level 23) and above.
2. Use Kotlin version 1.6.10 and above:  example `ext.kotlin_version = '1.6.10'`
3. Using an up-to-date Android gradle build tools version and an up-to-date gradle version accordingly.

### **iOS**

This plugin requires several configurations to be able to work on iOS. Please make sure you have those requirement:

1. Compatible with apps targeting iOS 9.0 and above.
2. Use Swift version 5.0 and above

### Step 1 - Add Dependency

In the  `dependencies:` section of your `pubspec.yaml` add the following line:&#x20;

```
tutelarfluttersdk 1.0.1
```

### Step 2 - Initialize SDK

Add the following line of code to initialise it with the api key you obtained from the Tutelar merchant panel. If you don’t have an api key, create a new one.

```
Tutelar tutelar = Tutelar("YOUR API KEY");
```

### Step 3 - Getting Device Info

By calling the following function to receive the device info shown below

```
var sdkResponse = await tutelar.getDeviceDetails();
if(sdkResponse['success'] == true){
    var deviceDetail = response['data'];
    // Handle Success flow
}else{
    var failureMessage = response['message'];
     // Handle Failure flow
}
```

### Step 4 - Update Permission for iOS

If you are working with iOS Build, You have to add this permission in Info.plist

```
// This is probably the only one you need. Background location is supported
// when the app is using location service while in the background.
NSLocationWhenInUseUsageDescription
```

**Step 5 - Proguard Rules (optional)**

If you are using Proguard for your builds, modify the Proguard rule file:

```
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.** { *; }

-dontwarn com.tutelarfluttersdk.**
-keep class com.tutelarfluttersdk.** {*;}
```

### Sample Device Fingerprint Data

```json
{
        "status": true,
        "device": {
            "deviceId": "7edb5cf527d4b8b9",
            "platform": "a32x",
            "is_real_device": true,
            "deviceCharging": false,
            "batteryLevel": "61",
            "devicePixelRatio": "720 x 1457",
            "screenWidth": "720",
            "screenHeight": "1457",
            "touchSupport": true,
            "deviceMemory": "5.81 GB",
            "os": "Android TIRAMISU",
            "deviceTypes": {
                "isMobile": true,
                "isDesktop": false,
                "isLinux": false,
                "isLinux64": false,
                "isMac": false,
                "isSmartTV": false,
                "isTablet": false,
                "isWindows": false,
                "isiPad": false,
                "isiPhone": false,
                "isiPod": false
            },
            "displayResolution": "720 x 1457",
            "audioHardware": {
                "hasSpeakers": true
            },
            "microPhoneHardware": {
                "hasMicrophone": true
            },
            "videoHardware": {
                "hasWebCam": true
            },
            "android_id": "TP1A.220624.014",
            "board": "a32x",
            "brand": "samsung",
            "display": "TP1A.220624.014.M326BDDU4CVK1",
            "boot_loader": "M326BDDU4CVK1",
            "finger_print": "samsung/a32xins/a32x:13/TP1A.220624.014/M326BDDU4CVK1:user/release-keys",
            "hardware": "mt6853",
            "host": "SWDK3808",
            "manufacturer": "samsung",
            "model": "SM-M326B",
            "product": "a32xins",
            "user": "dpi",
            "type": "user",
            "is_emulator": false,
            "ip_address": "172.18.24.158",
            "imei_number": "",
            "data_enabled": "",
            "serial_number": "",
            "network_type": "",
            "data_roaming": "",
            "root_status": false,
            "memory_information": {
                "total_memory": "5.81 GB",
                "available_memory": "3.40 GB",
                "used_memory": "2.41 GB"
            },
            "kernel_version": "4.14.186-25331340",
            "proximity_sensor": {
                "id": 0,
                "is_dynamic_sensor": false,
                "is_wakeup_sensor": true,
                "name": "Ear Hover Proximity Lite Sensor (ProToS Lite)",
                "resolution": 1.0,
                "type": 8,
                "string_type": "android.sensor.proximity",
                "reporting_mode": 1,
                "vendor": "Samsung Electronics.",
                "version": 1,
                "power": 0.75,
                "max_delay": 0,
                "min_delay": 0,
                "maximum_range": 5.0
            },
            "language_info": {
                "language": "en",
                "display_language": "English",
                "iso_3_language": "eng"
            },
            "country_info": {
                "country": "GB",
                "display_country": "United Kingdom",
                "iso_3_country": "GBR"
            },
            "system_storage": {
                "total": "4.73 GB",
                "used": "4.72 GB"
            },
            "external_storage": {},
            "screen_brightness": "193",
            "screen_size": "6.039358293217227",
            "developer_mode_enabled": true,
            "timestamp": 1673075519729,
            "timezone": "Asia/Kolkata",
            "deviceHash": "a7a67efe4ecaf181abfa181a7bad61d0"
        },
        "time": {
            "timestamp": 1673075519731,
            "timezone": "Asia/Kolkata"
        }
    }

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tutelar.io/tutelar-api-document/mobile-sdk-integrations/flutter-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
