diff --git a/packages/flutter/lib/src/services/platform_views.dart b/packages/flutter/lib/src/services/platform_views.dart index d2feeb8603..9dab5b1042 100644 --- a/packages/flutter/lib/src/services/platform_views.dart +++ b/packages/flutter/lib/src/services/platform_views.dart @@ -44,7 +44,16 @@ class PlatformViewsRegistry { /// /// Typically a platform view identifier is passed to a platform view widget /// which creates the platform view and manages its lifecycle. - int getNextPlatformViewId() => _nextPlatformViewId++; + int getNextPlatformViewId() { + // On the Android side, the interface exposed to users uses 32-bit integers. + // See https://github.com/flutter/engine/pull/39476 for more details. + + // We can safely assume that a Flutter application will not require more + // than MAX_INT32 platform views during its lifetime. + const int MAX_INT32 = 0x7FFFFFFF; + assert(_nextPlatformViewId <= MAX_INT32); + return _nextPlatformViewId++; + } } /// Callback signature for when a platform view was created.