flutter_udid

pub package

Plugin for getting a persistent UDID across app reinstalls on iOS and Android.

Getting Started

import 'package:flutter_udid/flutter_udid.dart';
String udid = await FlutterUdid.udid;

This provides an UDID for both iOS and Android using the format of the corresponding platform.

PlatformFormat
iOS7946DA4E-8429-423C-B405-B3FC77914E3E
Android8af8770a27cfd182

To get a consistent formatting on both platforms use:

import 'package:flutter_udid/flutter_udid.dart';
String udid = await FlutterUdid.consistentUdid;

This will result in an UDID of the following format:
984725b6c4f55963cc52fca0f943f9a8060b1c71900d542c79669b6dc718a64b

The UDID can change after a factory reset! Additionally if a device has been updated to Android 8.0 through an OTA and the app is reinstalled the UDID may change as well due to security changes in Android 8.0. On rooted and jailbroken devices the ID can be changed, so make to take this into account. However it should not be possible to identify as another already existing user through random guessing because of the complexity of the ID.

For help getting started with Flutter, view the online documentation.

For help on editing plugin code, view the documentation.

Libraries

cirrus_flutter_udid

Dart

VM

dart:ffi
Foreign Function Interface for interoperability with the C programming language. [...]

Web

dart:html
HTML elements and other resources for web-based applications that need to interact with the browser and the DOM (Document Object Model). [...]
dart:js
Low-level support for interoperating with JavaScript. [...]
dart:js_util
Utility methods to efficiently manipulate typed JSInterop objects in cases where the name to call is not known at runtime. You should only use these methods when the same effect cannot be achieved with @JS annotations. These methods would be extension methods on JSObject if Dart supported extension methods.