{"id":19167227,"url":"https://github.com/fingerprintjs/fingerprintjs-pro-flutter","last_synced_at":"2025-09-11T05:15:51.084Z","repository":{"id":38848382,"uuid":"462724329","full_name":"fingerprintjs/fingerprintjs-pro-flutter","owner":"fingerprintjs","description":"A Flutter plugin for the native FingerprintJS Pro libraries","archived":false,"fork":false,"pushed_at":"2025-09-08T12:46:04.000Z","size":530,"stargazers_count":40,"open_issues_count":0,"forks_count":14,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-09-08T14:40:27.573Z","etag":null,"topics":["dart","fingerprint","fingerprinting","fingerprintjs","fingerprintjs-pro","flutter","flutter-plugin","fraud","fraud-detection","identification","visitor-identifier"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fingerprintjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-23T12:25:21.000Z","updated_at":"2025-09-08T12:46:06.000Z","dependencies_parsed_at":"2023-02-12T04:00:52.781Z","dependency_job_id":"5bba1b2d-3f17-4d16-9ba9-867841a0a461","html_url":"https://github.com/fingerprintjs/fingerprintjs-pro-flutter","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/fingerprintjs/fingerprintjs-pro-flutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-pro-flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-pro-flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-pro-flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-pro-flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fingerprintjs","download_url":"https://codeload.github.com/fingerprintjs/fingerprintjs-pro-flutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-pro-flutter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274580443,"owners_count":25311174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","fingerprint","fingerprinting","fingerprintjs","fingerprintjs-pro","flutter","flutter-plugin","fraud","fraud-detection","identification","visitor-identifier"],"created_at":"2024-11-09T09:36:24.670Z","updated_at":"2025-09-11T05:15:51.075Z","avatar_url":"https://github.com/fingerprintjs.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fingerprint.com\"\u003e\n    \u003cpicture\u003e\n     \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://fingerprintjs.github.io/home/resources/logo_light.svg\" /\u003e\n     \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://fingerprintjs.github.io/home/resources/logo_dark.svg\" /\u003e\n     \u003cimg src=\"https://raw.githubusercontent.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/main/res/logo_dark.svg\" alt=\"Fingerprint logo\" width=\"312px\" /\u003e\n   \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/fingerprintjs/fingerprintjs-pro-flutter/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/fingerprintjs/fingerprintjs-pro-flutter/actions/workflows/ci.yml/badge.svg\" alt=\"Build status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pub.dev/packages/fpjs_pro_plugin\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/fpjs_pro_plugin.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/:license-mit-blue.svg?style=flat\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/39EpE2neBg\"\u003e\u003cimg src=\"https://img.shields.io/discord/852099967190433792?style=logo\u0026label=Discord\u0026logo=Discord\u0026logoColor=white\" alt=\"Discord server\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Fingerprint Pro Flutter\n\n[Fingerprint](https://fingerprint.com/) is a device intelligence platform offering visitor\nidentification and device intelligence with industry-leading accuracy. Fingerprint Flutter SDK is an easy way to integrate Fingerprint into your Flutter\napplication. The plugin allows you to call the underlying native Fingerprint agents (Android, iOS, and Web) and identify devices.\n\n## Table of contents\n- [Fingerprint Pro Flutter](#fingerprint-pro-flutter)\n  - [Table of contents](#table-of-contents)\n  - [Requirements](#requirements)\n  - [Dependencies](#dependencies)\n  - [How to install](#how-to-install)\n    - [Web platform (Optional)](#web-platform-optional)\n  - [Usage](#usage)\n    - [1. Configure and initialize the plugin](#1-configure-and-initialize-the-plugin)\n    - [2. Identify visitors](#2-identify-visitors)\n    - [Linking and tagging information](#linking-and-tagging-information)\n    - [Specifying a custom timeout](#specifying-a-custom-timeout)\n  - [Additional Resources](#additional-resources)\n  - [Support and feedback](#support-and-feedback)\n  - [License](#license)\n\n## Requirements\n- Flutter 3.13 or higher\n- Dart 3.3 or higher\n- Android 5.0 (API level 21+) or higher\n- iOS 13+/tvOS 15+, Swift 5.7 or higher (stable releases)\n\nWe aim to keep the [Flutter compatibility policy](https://docs.flutter.dev/release/compatibility-policy).\n\n## Dependencies\n- [Fingerprint JavaScript agent](https://www.npmjs.com/package/@fingerprintjs/fingerprintjs-pro)\n- [Fingerprint iOS](https://github.com/fingerprintjs/fingerprintjs-pro-ios)\n- [Fingerprint Android](https://github.com/fingerprintjs/fingerprintjs-pro-android)\n\n## How to install\n\nAdd `fpjs_pro_plugin` to the `pubspec.yaml` file in your Flutter app:\n\n```yaml\ndependencies:\n  flutter:\n    sdk: flutter\n  ...\n  fpjs_pro_plugin: ^4.2.0\n```\n\nRun `flutter pub get` to download and install the package.\n\n### Web platform (Optional)\n\nTo use this plugin on the web, add the JavaScript agent loader `\u003cscript\u003e` tag to the `\u003chead\u003e` of your HTML template inside the `web/index.html` file:\n\n```html\n\u003chead\u003e\n  \u003c!-- ... --\u003e\n  \u003cscript src=\"assets/packages/fpjs_pro_plugin/web/index.js\" defer\u003e\u003c/script\u003e\n\u003c/head\u003e\n```\n\n## Usage\n\nTo identify visitors, you need to [sign up for a Fingerprint account](https://dashboard.fingerprintjs.com/signup/) (there is a free trial available).\n\n- Go to [the Fingerprint Pro dashboard](https://dashboard.fingerprint.com/).\n- Navigate to **App Settings** \u003e **API Keys** to find your _Public_ API Key.\n\n### 1. Configure and initialize the plugin\n\nInitialize the Fingerprint Flutter plugin inside a [StatefulWidget](https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html), for example, in the `initState` method. \n\nUse the [Public API key](https://dev.fingerprint.com/docs/quick-start-guide#2-get-your-api-key) and [region](https://dev.fingerprint.com/docs/regions) of your Fingerprint workspace (US region is used by default).\n\n```dart\nimport 'package:fpjs_pro_plugin/fpjs_pro_plugin.dart';\nimport 'package:fpjs_pro_plugin/region.dart';\n\nvoid main() {\n  runApp(MyApp());\n}\n\nclass MyApp extends StatefulWidget {\n  @override\n  State\u003cMyApp\u003e createState() =\u003e _MyAppState();\n}\n\n// Initialization\nclass _MyAppState extends State\u003cMyApp\u003e {\n  @override\n  void initState() {\n    super.initState();\n    doInit();\n  }\n  \n  void doInit() async {\n    await FpjsProPlugin.initFpjs(\n      '\u003cPUBLIC_API_KEY\u003e', // insert your API key here\n      region: Region.us // or Region.eu, Region.ap\n    );\n  }\n  // ...\n}\n```\n\nTo avoid ad blockers, we recommend proxying requests from your application to Fingerprint servers through one of our proxy integrations. See [Evading ad blockers with proxy integrations](https://dev.fingerprint.com/docs/protecting-the-javascript-agent-from-adblockers) for more information.\n\nTo use a proxy integration, you can configure `endpoint`, `scriptUrlPattern`, and their fallbacks.\n\n```dart\n void doInit() async {\n    await FpjsProPlugin.initFpjs(\n      '\u003cPUBLIC_API_KEY\u003e',\n      region: Region.us,\n      // Your proxy integration identification endpoint\n      endpoint: 'https://metrics.yourwebsite.com',\n      endpointFallbacks: ['https://api.fpjs.io'], // region-specific fallback\n      // Your proxy integration script URL pattern\n      // Only necessary for the web platform\n      scriptUrlPattern: 'https://metrics.yourwebsite.com/web/v\u003cversion\u003e/\u003capiKey\u003e/loader_v\u003cloaderVersion\u003e.js',\n      scriptUrlPatternFallbacks: [\n        'https://fpjscdn.net/v\u003cversion\u003e/\u003capiKey\u003e/loader_v\u003cloaderVersion\u003e.js',\n      ],\n    );\n  }\n```\n\n### 2. Identify visitors\n\nUse `getVisitorId` to get just the visitor ID, or `getVisitorData` to get the identification response object.\n\n```dart\nimport 'package:fpjs_pro_plugin/fpjs_pro_plugin.dart';\nimport 'package:fpjs_pro_plugin/region.dart';\nimport 'package:fpjs_pro_plugin/error.dart';\n// ...\n\nclass _MyAppState extends State\u003cMyApp\u003e {\n  void identify() async {\n    try {\n      var visitorId = await FpjsProPlugin.getVisitorId();\n      var visitorData = await FpjsProPlugin.getVisitorData();\n\n      print('Visitor ID: $visitorId');\n      print('Visitor data: $visitorData');\n    } on FingerprintProError catch (e) {\n      // Process the error\n      print('Error identifying visitor: $e');\n      // See lib/error.dart to get more information about error types\n    }\n  }\n}\n```\n\n\nBy default, `getVisitorData()` will return a short response (`FingerprintJSProResponse`).\nPass `extendedResponseFormat: true` to the `initFpjs` function to get an extended response (`FingerprintJSProExtendedResponse`).\n\n```dart\nvoid doInit() async {\n  await FpjsProPlugin.initFpjs('\u003cPUBLIC_API_KEY\u003e', extendedResponseFormat: true);\n}\n```\n\n### Linking and tagging information\n\nThe `visitorId` provided by Fingerprint Identification is especially useful when combined with information you already know about your users, for example, account IDs, order IDs, etc. To learn more about various applications of the `linkedId` and `tag`, see [Linking and tagging information](https://dev.fingerprint.com/docs/tagging-information).\n\n```dart\nvoid identify() async {\n  const tags = {\n    'userAction': 'login',\n    'analyticsId': 'UA-5555-1111-1'\n  };\n  const linkedId = 'user_1234';\n\n  visitorId = await FpjsProPlugin.getVisitorId(linkedId: linkedId, tags: tags);\n  deviceData = await FpjsProPlugin.getVisitorData(linkedId: linkedId, tags: tags);\n}\n```\n\n### Specifying a custom timeout\n\n*Default timeout value:*\n- iOS: 60 seconds\n- Android: not specified\n- Web: 10 seconds\n\nYou can override the default timeout with a custom value of your choice. If the `getVisitorId()` or `getVisitorData()` call does not complete within the specified (or default) timeout, you will receive a `ClientTimeoutError` error.\n\n```dart\nvoid identify() async {\n  visitorId = await FpjsProPlugin.getVisitorId(timeoutMs: 10000);\n  deviceData = await FpjsProPlugin.getVisitorData(timeoutMs: 10000);\n}\n```\n\n## Additional Resources\n- [Fingerprint Pro documentation](https://dev.fingerprint.com/docs)\n- [Server API](https://dev.fingerprint.com/reference/server-api)\n\n## Support and feedback\n\nTo report problems, ask questions, or provide feedback, please\nuse [Issues](https://github.com/fingerprintjs/fingerprintjs-pro-flutter/issues). If you need private support, please\nemail us at `oss-support@fingerprint.com`.\n\n## License\n\nThis project is licensed under the [MIT license](https://github.com/fingerprintjs/fingerprintjs-pro-flutter/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-pro-flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-pro-flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-pro-flutter/lists"}