fluttercommunity/plus_plugins
64.9
Adequate · 19 September 2026
13.7k
lines of production code
Dart
with C++, C, Swift, Java, Kotlin, Objective-C
1
measurement over time
What this system is
This system is a collection of Flutter plugins that provide cross-platform access to native device capabilities, including battery status, network connectivity, hardware sensors, and device information. It also offers utilities for scheduling background alarms, sharing content across platforms, and launching system intents. The codebase focuses on modernizing these integrations by migrating native implementations to Kotlin and Swift, expanding platform support to include Linux and Windows, and standardizing project structures for better developer experience.
How it got here
2017–2021 — Platform interface migration and modernization
74 changes.
This period focused on migrating multiple plugins to the Flutter v2 embedding and extracting platform interfaces to standardize the architecture. It involved extensive refactoring of Android and iOS implementations, upgrading build systems to Kotlin DSL and modern Gradle versions, and adding comprehensive test coverage. The work also included expanding API capabilities, such as supporting multiple network types and new sensor data, while updating example apps to Material 3 and modern tooling standards.
2022–2025 — multi-platform expansion and Kotlin migration
31 changes.
This period focused on expanding plugin support to Linux, Web, and Windows while migrating Android implementations to Kotlin. It also involved adding comprehensive integration and unit tests across the repository to ensure cross-platform reliability and stability.
Features
Add Linux and Web platform implementations for network\_info\_plus
This change introduces the missing platform-specific implementations for Linux and Web within the \network\_info\_plus\ package. The new \NetworkInfoPlusLinuxPlugin\ provides native support for retrieving Wi-Fi details (such as SSID, IP addresses, BSSID, gateway, and broadcast address) on Linux systems by interacting with NetworkManager. For Web platforms, a stub implementation is added that correctly throws \UnsupportedError\ for Wi-Fi queries, ensuring the API contract is maintained without crashing. These additions complete the federated architecture, allowing the package to function on Linux and Web targets where it previously lacked support.
_packages/network\_info\_plus/network\_info\plus/lib/src · high confidence
Add connectedNotCharging battery state to platform interface
The platform interface now exposes a new \connectedNotCharging\ state in the \BatteryState\ enum, representing when a device is connected to power but not charging the battery (e.g., due to charge limits or insufficient power). This state is supported on Android, macOS, and Linux. A corresponding utility function \parseBatteryState\ has been added to map the string representation 'connected\_not\_charging' to the new enum value, ensuring consistent parsing across platforms.
_packages/battery\_plus/battery\_plus\_platform\interface/lib/src · high confidence
Added Linux and Windows native runner scaffolding for example apps
The example applications for the battery\_plus and connectivity\_plus plugins now include the necessary native project files to build and run on Linux and Windows. This change adds CMake build configurations, GTK-based application entry points for Linux, and Win32 window management with DPI awareness for Windows, enabling developers to test the plugins on these desktop platforms directly.
(repo-wide) · high confidence
Added web example assets for standalone PWA support
The web example application now includes an index.html and manifest.json, enabling it to run as a standalone Progressive Web App (PWA) with proper icons, theme colors, and mobile meta tags.
_packages/device\_info\_plus/device\_info\plus/example/web · high confidence
Android share plugin rewritten in Kotlin with background I/O and user-action feedback
The Android implementation of the share\_plus plugin has been rewritten in Kotlin, replacing the previous Java code. This change moves file preparation and disk I/O to a background thread to prevent main-thread blocking, and introduces a new mechanism to report whether the user successfully selected an app or dismissed the share sheet. A custom FileProvider is included to avoid manifest conflicts, and the plugin now properly handles activity lifecycle events and coroutine cancellation to ensure stability.
_packages/share\_plus/share\plus/android/src/main/kotlin · high confidence
Battery Plus platform interface exposes battery state and save mode capabilities
The platform interface for the Battery Plus plugin has been restructured to expose new capabilities for monitoring device power status. Users can now retrieve the current battery state (e.g., charging, discharging, full) via the \batteryState\ getter and monitor real-time changes through the \onBatteryStateChanged\ stream. Additionally, a new \isInBatterySaveMode\ getter allows applications to detect if the device is currently in a low-power or battery-saving mode. These changes are implemented in the platform interface layer, providing the abstract contract and method-channel implementation for these new features.
_packages/battery\_plus/battery\_plus\_platform\interface/lib · high confidence
Example app now displays comprehensive device information across all supported platforms
The example application has been updated to showcase the full range of device details available through the plugin. It now reads and displays extensive data for Android (including storage, RAM, and low-RAM status), iOS (including model names, disk/ram info, and Vision/Mac app indicators), macOS (including kernel and CPU details), Linux, Windows, and Web browsers. This provides users with a complete reference for the properties exposed by the plugin on each platform.
_packages/device\_info\_plus/device\_info\plus/example/lib · high confidence
Initial release of sensors\_plus\_platform\_interface package
The \sensors\_plus\_platform\_interface\ package is now available as a standalone package, providing a common platform interface for the \sensors\_plus\ plugin. This change extracts the platform interface into its own package, which is automatically included as a dependency when using \sensors\_plus\, ensuring a consistent API layer across different platforms.
_packages/battery\_plus/battery\_plus\_platform\_interface, packages/sensors\_plus/sensors\_plus\_platform\interface · high confidence
Introduction of DeviceInfoPlatform interface for plugin extensibility
The device\_info\_plus package now exposes a formal platform interface (DeviceInfoPlatform) that defines the contract for platform-specific implementations. This change allows custom or third-party platform plugins to extend the base interface and provide their own device information logic, ensuring backward compatibility when new methods are added to the interface in future versions.
_packages/device\_info\_plus/device\_info\_plus\_platform\interface/lib · high confidence
NetworkInfo API expands to include IPv6, subnet mask, gateway, and broadcast details
The NetworkInfo class now exposes methods to retrieve the IPv6 address, subnet mask, gateway IP, and broadcast address of the connected Wi-Fi network, in addition to the existing SSID, BSSID, and IPv4 capabilities. This allows applications to access a more complete set of network configuration details directly from the public API.
_packages/network\_info\_plus/network\_info\plus/lib · high confidence
New MethodChannel implementation for device info platform interface
The platform interface package now includes a concrete MethodChannelDeviceInfo class that implements the DeviceInfoPlatform interface. This implementation uses a standard method channel ('dev.fluttercommunity.plus/device\_info') to invoke the 'getDeviceInfo' native method and returns the result as a BaseDeviceInfo object, providing the underlying communication mechanism for the device\_info\_plus plugin.
_packages/device\_info\_plus/device\_info\_plus\_platform\_interface/lib/method\channel · high confidence
New Windows platform implementation for battery\_plus
The Windows platform support for the battery\_plus plugin has been added, enabling Flutter apps on Windows to access battery information. This implementation provides methods to retrieve the current battery level, determine if the system is in battery saver mode, and get the current battery state (full, charging, discharging, or unknown). It also supports real-time battery status updates via an event stream, allowing applications to react to changes in power source or battery level.
_packages/battery\_plus/battery\plus/windows · high confidence
New platform implementations for Linux and Web
The plugin now includes dedicated platform implementations for Linux and Web. The Linux implementation (\battery\_plus\_linux.dart\) utilizes the \upower\ library to report battery level, state, and changes, introducing a \not\_charging\ state for connected-but-not-charging scenarios. The Web implementation (\battery\_plus\_web.dart\) uses the \package:web\ library to access the Battery Status API, with graceful fallbacks for browsers like Firefox and Safari that do not support the API.
_packages/battery\_plus/battery\plus/lib/src · high confidence
Platform interface adds IPv6, subnet, gateway, and broadcast network details
The platform interface for network\_info\_plus has been restructured to expose additional network information. The abstract NetworkInfoPlatform and its MethodChannelNetworkInfo implementation now include methods to retrieve the IPv6 address, subnet mask, gateway IP, and broadcast address alongside the existing SSID, BSSID, and IPv4 data. A new LocationAuthorizationStatus enum and its parsing utility have also been added to the interface layer.
_packages/network\_info\_plus/network\_info\_plus\_platform\interface/lib · high confidence
Sensors platform interface adds barometer support and configurable sampling periods
The \sensors\_plus\_platform\_interface\ now exposes a \barometerEventStream\ alongside the existing accelerometer, gyroscope, and magnetometer streams, allowing users to read atmospheric pressure data. All sensor streams now accept a \samplingPeriod\ parameter (defaulting to \SensorInterval.normalInterval\) so developers can control the update rate. Additionally, the platform implementation validates the sampling period on Android, warning and correcting reserved values (1–3 microseconds) to prevent sensor registration failures.
_packages/sensors\_plus/sensors\_plus\_platform\interface/lib · high confidence
Support for passing extra data to alarm callbacks
The Android Alarm Manager plugin now allows developers to send extra data to alarm callbacks. Users can pass a \params\ map (containing JSON-serializable data) when scheduling alarms via \oneShot\ or \oneShotAt\. To receive this data, the callback function signature must be updated to \Function(int, Map\<String, dynamic\>)\, where the second argument contains the passed parameters. If the provided data cannot be converted to JSON, an \UnsupportedError\ will be thrown.
_packages/android\_alarm\_manager\plus/lib · high confidence
android\_alarm\_manager\_plus package initialization and baseline documentation
This change introduces the initial structure and documentation for the android\_alarm\_manager\_plus package. It adds essential repository configuration files (.gitattributes, .gitignore) to manage line endings and build artifacts, establishes the project license and code of conduct, and provides the primary README.md with setup instructions, platform requirements (Flutter \>=3.12.0, Java 17, Kotlin 2.2.0, AGP \>=8.12.1), and usage examples for scheduling alarms. A CHANGELOG.md is also included, documenting the history from version 1.0.0 through 5.1.1, covering features like null safety, Android 12+ compatibility, and various bug fixes.
_packages/android\_alarm\_manager\plus · high confidence
iOS plugin implementation and privacy manifest added
The iOS implementation for the battery\_plus plugin has been added, introducing the FPPBatteryPlusPlugin (Objective-C) which handles battery level, state, and low-power mode queries via method channels, and exposes charging status changes via an event channel. The plugin correctly enables battery monitoring when listeners are active and disables it upon cancellation. A PrivacyInfo.xcprivacy manifest is also included to declare that no private APIs or data collection are used, ensuring compliance with Apple's privacy requirements.
_packages/battery\_plus/battery\plus/ios · high confidence
macOS battery status and low-power mode support
The macOS implementation now provides real-time battery state updates via a new event channel and adds a method to check if the system is in Low Power Mode (available on macOS 12.0+). This change introduces the \BatteryPlusChargingHandler\ to stream charging status changes and updates the plugin to handle \isInBatterySaveMode\ queries, while also including the required \PrivacyInfo.xcprivacy\ manifest for App Store compliance.
_packages/battery\_plus/battery\plus/macos · high confidence
Removals
Removal of legacy Android example project files
The example/android directory has had its AndroidManifest.xml, MainActivity.java, and .gitignore files deleted. This removes the manual Android application configuration and Java activity code that were previously part of the example app, likely as part of a cleanup or migration away from the v1 Android embedding structure.
example/android · high confidence
Removal of legacy Android share plugin implementation
The Android source files for the share plugin, including the Java implementation (SharePlugin.java) and the AndroidManifest.xml, have been removed. This eliminates the legacy method-channel-based code that previously handled platform version reporting and basic sharing intents, indicating a shift away from this specific Android-side implementation.
android/src, lib · high confidence
Removal of the example application entry point
The \example/lib/main.dart\ file has been deleted, removing the default example application that previously demonstrated the plugin's functionality by displaying the platform version. Users relying on this file for a quick-start demo or reference implementation will no longer have this specific example code available in the repository.
example/lib · high confidence
Removed obsolete example project configuration files
The example directory no longer includes legacy IDE and build artifacts, specifically the \.gitignore\, \README.md\, \android.iml\, and \share\_example.iml\ files. This cleanup removes outdated project metadata and documentation that are no longer relevant to the current example setup.
example · high confidence
Behavioural changes
Add configurable sampling rates and barometer support
The sensors library now exposes \accelerometerEventStream\, \gyroscopeEventStream\, \userAccelerometerEventStream\, \magnetometerEventStream\, and the new \barometerEventStream\, all accepting an optional \samplingPeriod\ parameter to control the data rate. The previous top-level getters (e.g., \accelerometerEvents\) are deprecated in favor of these new stream functions. This change also introduces barometer event streaming across all supported platforms.
_packages/sensors\_plus/sensors\plus/lib · high confidence
Android connectivity check now returns multiple network types
The Android implementation of the connectivity plugin has been refactored to support reporting multiple active network types simultaneously. The new \ConnectivityMethodChannelHandler\ retrieves and returns the list of network types via \connectivity.getNetworkTypes()\ instead of a single value, allowing applications to detect when multiple connection methods (e.g., Wi-Fi and mobile data) are active at the same time.
connectivity · high confidence
Android connectivity detection rewritten to support multiple network types
The Android implementation for connectivity\_plus has been replaced with a new architecture that detects and reports multiple simultaneous network types (such as Wi-Fi, mobile, Ethernet, Bluetooth, VPN, and Satellite) rather than a single connection state. This change introduces a \ConnectivityBroadcastReceiver\ that utilizes the modern \ConnectivityManager.NetworkCallback\ API on Android 7.0+ for more accurate, real-time network status updates, while falling back to legacy broadcast receivers on older versions. Users will now receive a list of active connectivity types in the stream events, providing a more granular view of the device's network capabilities.
_packages/connectivity\_plus/connectivity\plus/android · high confidence
Android implementation migrated to Kotlin with updated API usage
The Android plugin implementation has been rewritten in Kotlin, replacing the previous Java code. This update adapts the plugin to use modern Android APIs, specifically leveraging ConnectivityManager for network information retrieval on Android 12 (API level 31) and newer, while maintaining compatibility with older versions through deprecated API fallbacks. The plugin now explicitly registers required permissions (ACCESS\_NETWORK\_STATE, ACCESS\_WIFI\_STATE) in its manifest and structures the code into dedicated Kotlin classes for plugin lifecycle, method channel handling, and network data retrieval.
_packages/network\_info\_plus/network\_info\plus/android · high confidence
Android intent handling refactored with new sender and method handler classes
The Android implementation for android\_intent\_plus has been restructured into two new core classes: IntentSender and MethodCallHandlerImpl. IntentSender now encapsulates the logic for building intents and launching them via various methods including standard start, service start, broadcast, and chooser dialogs, while also providing utilities to check if an activity can resolve an intent or to retrieve details of the resolved activity. MethodCallHandlerImpl manages the Flutter method channel communication, parsing incoming arguments (including support for array arguments) and forwarding them to the IntentSender, with specific handling for URI parsing and fallback to implicit intents when explicit resolution fails.
_packages/android\_intent\plus/android/src/main/java · high confidence
Android sensors plugin rewritten in Kotlin with barometer support and configurable sampling
The Android implementation of the sensors plugin has been migrated from Java to Kotlin, introducing a new SensorsPlugin and StreamHandlerImpl. This change adds support for the barometer sensor (pressure) alongside existing accelerometer, gyroscope, and magnetometer sensors. It also enables configurable sampling periods for all sensor types via method channel calls, allowing users to adjust the update rate. Additionally, the implementation now includes platform timestamps in sensor events and handles cases where a requested sensor is not available on the device by returning an error instead of crashing.
_packages/sensors\_plus/sensors\plus/android/src/main/kotlin · high confidence
AndroidIntent now supports chooser dialogs, service launches, and array arguments
The AndroidIntent class has been updated to support additional intent behaviors. Users can now launch intents wrapped in a system chooser dialog using the new launchChooser method, start background services via the sendService method, and pass array-typed extras using the arrayArguments parameter alongside the existing arguments map.
_packages/android\_intent\plus/lib · high confidence
Battery Plus API restructure and new battery state capabilities
The battery\_plus package has been refactored to use a platform interface pattern, consolidating platform implementations into a single package structure. The public API now exposes a singleton Battery class that provides access to battery level, battery state (including a new batteryState getter and onBatteryStateChanged stream), and battery save mode status (isInBatterySaveMode). The library also exports the BatteryState enum from the platform interface and includes a Linux-specific implementation file.
_packages/battery\_plus/battery\plus/lib · high confidence
Connectivity results are now returned as a list of types
The API for checking and monitoring network status has changed to support multiple simultaneous connectivity types. The \checkConnectivity()\ method and the \onConnectivityChanged\ stream now return a \List\<ConnectivityResult\>\ instead of a single result. This allows the library to report multiple active connections (e.g., Wi-Fi and cellular) at the same time, rather than just the primary one.
_packages/connectivity\_plus/connectivity\plus/lib · high confidence
Deprecate toMap method in BaseDeviceInfo
The \toMap\ method in the \BaseDeviceInfo\ class has been marked as deprecated. Users should now access device information directly via the \data\ getter instead of calling \toMap()\, which is retained only for legacy compatibility.
_packages/device\_info\_plus/device\_info\_plus\_platform\interface/lib/model · high confidence
Example app MainActivity migrated to Flutter embedding v2
The example application's MainActivity has been updated to extend FlutterActivity from the Flutter embedding v2 library (io.flutter.embedding.android.FlutterActivity). This change ensures the example app correctly utilizes the modern Android embedding system, which is required for compatibility with current Flutter versions and plugins.
_packages/battery\_plus/battery\plus/example/android/app/src/main/kotlin/io/flutter/plugins/batteryexample · high confidence
Example app demonstrates sending intents as broadcasts
The android\_intent\_plus example application now includes a MainActivity and MyBroadcastReceiver that register a broadcast receiver for the 'com.example.broadcast' intent filter. This change allows users to see how to handle broadcast intents within the example app, demonstrating the plugin's capability to send intents as broadcasts.
_packages/android\_intent\plus/example/android/app/src/main/java/io/flutter/plugins/androidintentexample · high confidence
Example app iOS project migrated to modern Flutter tooling and CocoaPods
The iOS example project for android\_intent\_plus has been updated to align with current Flutter standards. The app bundle name is now 'android\_intent\_example' (previously 'share\_example'), and the build system now uses CocoaPods for dependency management, introducing a workspace and scheme that include Pods. The Xcode project references have been updated to use GeneratedPluginRegistrant instead of the legacy PluginRegistry, and the build configuration has been upgraded to Xcode 11.0, removing obsolete resources like app.flx and xcconfig files in favor of the new CocoaPods-integrated setup.
_packages/android\_intent\plus/example/ios · high confidence
Example app now displays comprehensive Wi-Fi network details
The example application has been updated to retrieve and display a full set of Wi-Fi connection attributes, including IPv4, IPv6, gateway, broadcast address, and subnet mask, in addition to the previously shown name and BSSID. The UI now presents these values in a single status string, and the code uses the modern \permission\_handler\ package to request location permissions on Android and iOS before accessing sensitive network data.
_packages/network\_info\_plus/network\_info\plus/example/lib · high confidence
Example app now displays multiple active connection types
The connectivity\_plus example application has been updated to reflect support for multiple simultaneous connectivity types. The UI now lists all active connection types (e.g., Wi-Fi, Ethernet) rather than a single result, and uses a new \hasConnectivity\ helper to determine if any connection is available. Additionally, the app theme has been upgraded to use Material 3.
_packages/connectivity\_plus/connectivity\plus/example/lib · high confidence
Example app project structure restructured
The connectivity\_plus example application has been restructured, introducing standard Flutter project configuration files including .gitignore, .metadata, analysis\_options.yaml, and a README. This change updates the example app's development environment setup and linting configuration without altering the core connectivity functionality.
_packages/connectivity\_plus/connectivity\plus/example · medium confidence
Example app updated to use Material 3 and demonstrate battery features
The battery\_plus example application has been rewritten to adopt Material 3 design principles, enabling the new theme system via \useMaterial3: true\. The app now demonstrates core battery capabilities by displaying the current battery state in real-time and providing interactive buttons to retrieve the specific battery level percentage and check if the device is currently in battery save (power save) mode.
_packages/battery\_plus/battery\plus/example/lib · high confidence
Example app updated to use Material 3 and demonstrate new intent capabilities
The example application has been migrated to use Material 3 for its UI theme. It now includes interactive demos for launching intents with a chooser dialog, sending intents as broadcasts, and parsing/launching intents from URIs, alongside existing examples for setting alarms and opening explicit intents in Google Maps and Chrome.
_packages/android\_intent\plus/example/lib · high confidence
Example app updated to use Material 3 and handle Android 12 exact alarm permissions
The Android Alarm Manager Plus example application has been updated to use Material 3 for its UI theme and to explicitly handle the SCHEDULE\_EXACT\_ALARM permission required on Android 12 and later. The app now checks for this permission status, displays a clear message if it is denied, and provides a button to request the permission when necessary. Additionally, debug logging has been migrated from print statements to the dart:developer log API.
_packages/android\_alarm\_manager\plus/example/lib · high confidence
Expanded connectivity result types including satellite and multi-type support
The platform interface now exposes a broader set of connectivity states, adding \satellite\ (for iOS/macOS ultra-constrained paths and Android 15+ satellite transport) and \ethernet\ to the \ConnectivityResult\ enum. The interface also shifts from returning a single connection type to supporting multiple simultaneous connectivity types (e.g., \\[mobile, satellite\]\), with the new \parseConnectivityResults\ utility handling the mapping of string states to these enum values.
_packages/connectivity\_plus/connectivity\_plus\_platform\interface/lib/src · high confidence
Expanded device information models with RAM, disk, and platform-specific details
The device info models have been significantly expanded to provide more granular hardware and system details. Android and iOS models now include physical and available RAM sizes, as well as free and total disk sizes in bytes. iOS models additionally expose the commercial model name (e.g., 'iPhone 16 Pro'), support for visionOS detection, and macOS app-on-vision detection. macOS models now provide major, minor, and patch version numbers alongside the model name. Windows models have been refactored to include detailed OS versioning, build information, and registry-derived identifiers. Linux models now offer a structured \toString\ method and comprehensive OS release data. Web browser info includes hardware concurrency and touch point support.
_packages/device\_info\_plus/device\_info\plus/lib/src/model · high confidence
Expanded device model support and new hardware metrics on iOS
The iOS implementation now returns human-readable model names (e.g., iPhone 16, iPad Pro M5) instead of raw hardware identifiers, and exposes new properties including physical and available RAM size, free and total disk storage, and flags indicating if the app is running on Mac or Vision devices. This change also adds identifiers for recent Apple devices such as the iPhone 16/17 series, iPhone 16e, and M5-chip iPads, while introducing a privacy manifest to comply with Apple's data collection requirements.
_packages/device\_info\_plus/device\_info\plus/ios · high confidence
Export XFile from share\_plus platform interface
The share\_plus platform interface now exports the XFile class from the cross\_file package, making it available to consumers of the platform interface without requiring them to add a direct dependency on cross\_file.
_packages/share\_plus/share\_plus\_platform\interface/lib · high confidence
Linux connectivity detection now reports multiple connection types and adds a hasConnectivity utility
The Linux implementation has been rewritten to use the NetworkManager library, allowing it to detect and return multiple active connection types (such as Wi-Fi, Ethernet, VPN, Bluetooth, and Mobile) simultaneously rather than a single result. Additionally, a new \hasConnectivity\ extension method is available on the list of connectivity results, providing a convenient way to check if any active network connection exists.
_packages/connectivity\_plus/connectivity\plus/lib/src · high confidence
Migrate Android implementation to Kotlin with expanded device metrics
The Android platform implementation for device\_info\_plus has been rewritten in Kotlin, replacing the previous Java code. This update expands the available device information by adding RAM details (total, available, and low-RAM status), storage metrics (total and free disk size), and the user-defined device name (on Android N+). It also includes system features and improved emulator detection, providing a more comprehensive view of the device hardware and software environment to Flutter applications.
_packages/device\_info\_plus/device\_info\plus/android/src/main/kotlin · high confidence
Migrate example app to Flutter V2 embedding
The example application has been updated to use the Flutter V2 Android embedding. This involves migrating the main activity to extend FlutterActivity, updating the AndroidManifest.xml to include the flutterEmbedding meta-data, and adding the necessary theme styles (LaunchTheme and NormalTheme) to support the new embedding lifecycle.
_packages/android\_alarm\_manager\plus/example/android/app · high confidence
Migrate iOS example project to Flutter tooling standards
The iOS example project for android\_alarm\_manager\_plus has been restructured to align with current Flutter project conventions. This includes adding the AppFrameworkInfo.plist to support the Flutter framework bundle, updating the Xcode project scheme to use the 'Profile' build configuration, and refreshing the .gitignore to exclude generated artifacts like Pods and symlinks. These changes ensure the example app builds and runs correctly within the standard Flutter development workflow.
_packages/android\_alarm\_manager\plus/example/ios · high confidence
Migration to Flutter v2 embedding API
The Android plugin implementation has been updated to use the new Flutter v2 embedding API (io.flutter.embedding). This change replaces the deprecated v1 embedding registration method with the modern FlutterPlugin and ActivityAware interfaces, ensuring compatibility with current Flutter versions and improving stability in add-to-app scenarios by correctly handling activity and context lifecycle changes.
_android\intent · high confidence
Platform-specific device info implementations for Linux, Web, and Windows
The plugin now includes dedicated platform implementations for Linux, Web, and Windows within the \lib/src\ directory. The Linux implementation reads system details from standard release files (\/etc/os-release\, \/etc/lsb-release\) and machine ID. The Web implementation utilizes \package:web\ to access browser navigator properties, including a safe getter for \deviceMemory\ to handle browser inconsistencies. The Windows implementation uses FFI and \package:win32\ to retrieve detailed system information, such as version numbers via \RtlGetVersion\, registry data, and hardware specs. These files establish the concrete platform logic for these operating systems, replacing or supplementing previous method-channel-based approaches.
_packages/device\_info\_plus/device\_info\plus/lib/src · high confidence
Platform-specific share implementations and Windows version detection
The share\_plus package now includes dedicated platform implementation files for Linux, macOS, Web, and Windows within the lib/src directory. The Linux and Windows implementations delegate to the url\_launcher package (specifically url\_launcher\_linux and url\_launcher\_windows) to open mailto URIs for text/URI sharing, as native file sharing is not supported on these platforms in this context. The Web implementation utilizes the modern Web Share API via dart:js\_interop, with fallbacks to file downloads or mailto links when the API is unavailable or the user dismisses the dialog. A new windows\_version\_helper.dart file detects if the OS is Windows 10 RS5 or later to determine if the modern Share UI (DataTransferManager) is available, though the current diff shows the fallback mailto implementation being registered for older versions. The macOS implementation remains a stub relying on the default MethodChannelShare from the platform interface.
_packages/share\_plus/share\plus/lib/src · high confidence
Refactored method channel implementation with improved file handling and new parameters
The \MethodChannelShare\ implementation in the platform interface has been rewritten to support new sharing capabilities and improved file management. Users can now provide a \sharePositionOrigin\ to control the anchor point for the iOS share sheet, and use \excludedCupertinoActivities\ to hide specific actions in the iOS share menu. File sharing logic has been enhanced to automatically generate temporary files with UUID-based paths when only in-memory data is provided, utilizing \XFile.name\ for better filename preservation and supporting optional \fileNameOverrides\ to customize output names.
_packages/share\_plus/share\_plus\_platform\_interface/lib/method\channel · high confidence
Regenerated iOS example app structure
The iOS example application for network\_info\_plus has been regenerated to align with modern Flutter tooling standards. This update introduces a new project structure including a dedicated RunnerTests target for unit testing, updates the Xcode workspace configuration to properly reference CocoaPods, and refreshes the AppDelegate to implement the FlutterImplicitEngineDelegate protocol. Additionally, the Info.plist now includes the com.apple.developer.networking.wifi-info entitlement required for Wi-Fi information retrieval, and the build scheme is configured to run the Flutter prepare script automatically.
(repo-wide) · high confidence
Regenerated macOS example app project structure
The macOS example application for the battery\_plus package has been regenerated to align with current Flutter tooling standards. This update refreshes the Xcode project configuration, including the project.pbxproj file, workspace settings, and build schemes, while introducing a standard .gitignore to exclude ephemeral build artifacts and user-specific Xcode data. It also establishes a new test target (RunnerTests) for unit testing and updates the app bundle metadata, such as the bundle identifier and entitlements, ensuring the example app builds and runs correctly with the latest macOS SDK and Flutter framework versions.
_packages/battery\_plus/battery\_plus/example/macos, packages/network\_info\_plus/network\_info\plus/example/macos · high confidence
Removal of Objective-C AppDelegate in iOS example
The Objective-C AppDelegate file (AppDelegate.m) has been removed from the iOS example project. This change eliminates the manual plugin registration logic previously handled in the application lifecycle, indicating a shift to a different plugin registration mechanism or a simplified project structure for the example app.
example/ios/Runner · medium confidence
Removal of legacy iOS plugin registration files
The legacy iOS plugin implementation files (SharePlugin.h and SharePlugin.m) have been removed. These files previously handled the old-style plugin registration by initializing a FlutterMethodChannel in the constructor, a pattern that is no longer used in the current plugin architecture.
ios · high confidence
Restructured Windows example project with modern build configuration
The Windows example application has been restructured to use a modern CMake-based build system (CMake 3.14+), replacing the previous setup. This includes new project-level and runner-level CMakeLists.txt files, a .gitignore for Visual Studio artifacts, and updated C++ runner sources (main.cpp, flutter\_window.cpp, win32\_window.cpp) that handle DPI awareness, dark mode theme support, and console output redirection. The application manifest now explicitly supports Windows 10/11 and PerMonitorV2 DPI awareness, ensuring the example app builds and runs correctly with current Flutter tooling and Visual Studio versions.
_packages/device\_info\_plus/device\_info\plus/example/windows · high confidence
Sensors Plus example app now uses a sensor-controlled Snake game and displays all sensor data
The example application has been replaced with a new interface that features a Snake game controlled by the device's accelerometer, replacing the previous demo. Additionally, the app now includes a comprehensive dashboard that displays real-time data and update intervals for the User Accelerometer, Accelerometer, Gyroscope, Magnetometer, and Barometer, demonstrating the full range of supported sensors.
_packages/sensors\_plus/sensors\plus/example/lib · high confidence
Share API migrated to SharePlus class with unified ShareParams
The share functionality is now accessed via the new \SharePlus\ class and its \share()\ method, which accepts a \ShareParams\ object to handle text, URIs, and files in a single call. The legacy \Share\ class and its static methods (such as \share\ and \shareUri\) are now deprecated and simply delegate to \SharePlus.instance.share()\. This change consolidates the API surface, allowing users to share multiple content types (text, URI, files) through one method while maintaining backward compatibility through the deprecated wrapper.
_packages/share\_plus/share\plus/lib · high confidence
Share API refactored to use a unified ShareParams object
The share\_plus platform interface has been refactored to replace the previous method signatures with a single \share\ method that accepts a \ShareParams\ object. This change consolidates sharing options—including text, URI, files, title, subject, preview thumbnails, and platform-specific settings like \sharePositionOrigin\ for iPad/Mac and \excludedCupertinoActivities\ for iOS/macOS—into one structured parameter. Users must now update their code to pass a \ShareParams\ instance instead of individual arguments, which simplifies the API and allows for more flexible combinations of share content across all supported platforms.
_packages/share\_plus/share\_plus\_platform\_interface/lib/platform\interface · high confidence
Standardized example app scaffolding for web platforms
The example applications for the battery\_plus, network\_info\_plus, and sensors\_plus plugins now include standardized web scaffolding files, including .gitignore, .metadata, README, web/index.html, and web/manifest.json. This ensures that the example apps are properly configured for version control and can be run as Progressive Web Apps (PWAs) with correct service worker registration and manifest definitions.
(repo-wide) · high confidence
Unified device info plugin with platform-specific exports and testing support
The device\_info\_plus library now provides a single entry point that exports platform-specific model classes (Android, iOS, Linux, macOS, Windows, and Web) and uses conditional imports to select the correct platform implementation for Web and Windows targets. The main DeviceInfoPlugin class exposes getters for each platform's device information, caching the results to avoid redundant calls, and includes a setMockInitialValues method to allow unit testing by injecting mock device data.
_packages/device\_info\_plus/device\_info\plus/lib · high confidence
Web connectivity detection now uses the package:web API
The web platform implementation has been migrated to use the modern \package:web\ API (replacing the previous \dart:html\-based approach). This change updates the underlying mechanism for checking connection status and listening to online/offline events, ensuring compatibility with the latest web standards while maintaining the same user-facing behavior of reporting Wi-Fi or no connection.
_packages/connectivity\_plus/connectivity\plus/lib/src/web · high confidence
Web sensor streams now close on cancel and migrate to dart:js\_interop
On the web platform, the sensors plugin now properly closes its internal stream controllers when listeners are cancelled, preventing resource leaks. This change is part of a broader migration to the new dart:js\_interop API for accessing browser sensor APIs (Accelerometer, Gyroscope, etc.), which replaces the previous JavaScript interop mechanism. Users relying on web-based sensor data will benefit from more robust stream lifecycle management and improved compatibility with modern web standards.
_packages/sensors\_plus/sensors\plus/lib/src · high confidence
Windows connectivity now reports multiple simultaneous network types
The Windows implementation of the connectivity plugin has been rewritten to detect and report all active network interfaces simultaneously rather than returning a single status. By leveraging the Windows Network List Manager and adapter address APIs, the plugin now returns a list of connectivity types (such as WiFi, Ethernet, and VPN) when checking status or listening for changes, allowing applications to understand the full network context on Windows.
_packages/connectivity\_plus/connectivity\plus/windows · high confidence
iOS Wi-Fi info retrieval refactored to prevent null results
The iOS implementation for retrieving Wi-Fi network details has been rewritten to use a provider-based architecture that selects the appropriate API based on the iOS version. On iOS 14 and later, the plugin uses the \NEHotspotNetwork\ framework for more reliable access to SSID and BSSID, while devices on older iOS versions fall back to the \CaptiveNetwork\ API. This change ensures that Wi-Fi information is returned consistently and avoids the null values that could occur with the previous implementation.
_packages/network\_info\_plus/network\_info\plus/ios · high confidence
iOS plugin class prefix renamed to FPP
The iOS implementation of the Android Alarm Manager Plus plugin has been updated to use the 'FPP' prefix for its Objective-C classes (e.g., FPPAndroidAlarmManagerPlusPlugin) instead of the previous 'FLT' prefix. This change aligns the iOS codebase with the broader Flutter plugin naming convention, ensuring consistency across the platform-specific implementations.
_packages/android\_alarm\_manager\plus/ios · high confidence
iOS sensors plugin rewritten in Swift with improved lifecycle management
The iOS implementation for the sensors plugin has been replaced with a new Swift-based architecture (FPPSensorsPlusPlugin) that registers event channels for accelerometer, user acceleration, gyroscope, magnetometer, and barometer data. This change introduces a dedicated cleanup mechanism (\_cleanUp) that properly nullifies stream handlers and stops motion updates when the Flutter engine detaches, preventing stale events from firing after plugin disposal. A PrivacyInfo.xcprivacy manifest has also been added to declare that no private data is collected or tracked.
_packages/sensors\_plus/sensors\plus/ios · high confidence
macOS device info implementation now returns human-readable model names
The macOS plugin implementation has been rewritten to provide a \modelName\ field alongside the raw hardware model identifier. This change introduces a comprehensive mapping of Mac model numbers (including recent M-series and 2025/2026 models) to their commercial names (e.g., "MacBook Pro (14-inch, 2023)") and adds a new \SystemUUID\ component to retrieve the platform UUID. Users will now receive more descriptive device identification data in the \getDeviceInfo\ response.
_packages/device\_info\_plus/device\_info\plus/macos · high confidence
macOS share implementation refactored with privacy manifest
The macOS plugin now includes a PrivacyInfo.xcprivacy file declaring no data tracking or collection, and the native Swift implementation (SharePlusMacosPlugin.swift) has been rewritten to use NSSharingServicePicker for handling shares. This change ensures compliance with Apple's privacy requirements and provides a more robust mechanism for sharing text, URIs, and file paths on macOS.
_packages/share\_plus/share\plus/macos · high confidence
package\_info\_plus: Android build migration and new install/update time tracking
The Android implementation has been migrated from Groovy to Kotlin and updated to support built-in Kotlin, requiring Android Gradle Plugin \>=8.12.1, Gradle wrapper \>=8.13, and Kotlin 2.2.0. The plugin now exposes \installTime\ and \updateTime\ properties, providing the application's installation and last-update timestamps. Additionally, the Android build signature is now computed using SHA-256 for improved security, and the installer store detection uses the modern \getInstallSourceInfo\ API on Android 11+.
_packages/package\_info\plus · high confidence
share\_plus example app regenerated for modern Flutter standards
The share\_plus example application has been completely regenerated to align with current Flutter project structures and best practices. This update introduces a new integration test suite in \integration\_test/\ to verify core sharing capabilities, adds a dedicated UI page for selecting \excludedCupertinoActivityType\ on iOS/macOS, and implements image preview functionality with deletion support. The underlying platform configurations have also been modernized, including an upgrade of the Android Gradle wrapper to version 8.14 and the adoption of the Flutter 2 embedding in the Android manifest.
_packages/share\_plus/share\plus/example · high confidence
Fixes
AlarmBroadcastReceiver converted to Kotlin
The AlarmBroadcastReceiver class has been rewritten in Kotlin, replacing the previous Java implementation. This change modernizes the Android plugin's native codebase while preserving the existing behavior of offloading alarm processing to AlarmService when a timer triggers.
_packages/android\_alarm\_manager\plus/android/src/main/kotlin · high confidence
Android plugin rewritten for Flutter v2 embedding and Android 12 compatibility
The Android implementation of the alarm manager plugin has been completely rewritten to support the Flutter v2 embedding, replacing the deprecated v1 embedding and \registerWith\ methods. The code now uses \JobIntentService\ for background execution and includes specific fixes for Android 12+ (API 31+), such as handling the \SCHEDULE\_EXACT\_ALARM\ permission check and using \PendingIntent.FLAG\_IMMUTABLE\. Additionally, the plugin now supports passing extra data (params) to alarm callbacks and ensures that periodic alarms remain exact by rescheduling them, addressing issues where they would otherwise become inexact over time.
_packages/android\_alarm\_manager\plus/android/src/main/java · high confidence
Fix incorrect context usage in Android example app
The Android example app's MainActivity now enforces StrictMode policies on Android 12 (API level 31) and higher to detect and log incorrect context usage, specifically ensuring the Activity context is used to obtain the WindowManager. This change prevents potential runtime issues related to context leaks or improper context handling in the example application.
_packages/device\_info\_plus/device\_info\plus/example/android/app/src/main/kotlin/io/flutter/plugins/deviceinfoexample · high confidence
Migrate Android implementation to Kotlin with improved battery state detection
The Android plugin implementation has been rewritten in Kotlin, replacing the previous Java code. This migration includes several behavioral fixes: it now correctly handles the 'not charging' battery state, ensures accurate battery status reporting on Android versions below API 26, and improves power save mode detection for specific manufacturers (Xiaomi, Huawei, Samsung) while avoiding deprecated hidden flags on Samsung devices running Android 12 or higher. Additionally, it uses ContextCompat for registering broadcast receivers to ensure compatibility.
_packages/battery\_plus/battery\plus/android/src/main/kotlin · high confidence
Regenerated iOS example app project structure
The iOS example app for connectivity\_plus has been regenerated to align with current Flutter tooling standards. This update introduces a new Xcode project configuration (project.pbxproj) that includes a dedicated unit test target (RunnerTests), updates the workspace settings to reference CocoaPods, and refreshes core project files such as the Info.plist, AppIcon assets, and storyboards. The AppDelegate has also been updated to Swift to support the implicit engine delegate pattern, ensuring the example app builds and runs correctly with modern Xcode and Flutter versions.
_packages/connectivity\_plus/connectivity\plus/example/ios · high confidence
iOS share plugin refactored with privacy manifest and modern UI handling
The iOS implementation of the share\_plus plugin has been refactored to improve stability and compliance. The core plugin logic is now in a new Objective-C file that replaces the deprecated UIApplication.keyWindow with a scene-based approach for iOS 13+, ensuring correct view controller resolution. It also adds support for newer iOS activity types (SharePlay, Collaboration, Add to Home Screen) and handles image previews for file sharing to avoid downscale issues. Additionally, a new PrivacyInfo.xcprivacy manifest has been added to declare data collection practices, addressing Apple's privacy requirements.
_packages/share\_plus/share\plus/ios · high confidence
iOS/macOS connectivity plugin stabilized with satellite support and crash fixes
The iOS and macOS connectivity plugins have been rewritten to use NWPathMonitor with a serial dispatch queue, preventing race-condition crashes during teardown. The implementation now guards the event sink to avoid crashes when network updates arrive after the Flutter engine has detached, and adds a new 'satellite' connectivity type for devices supporting ultra-constrained paths (iOS 26+/macOS 26+). Additionally, PrivacyInfo manifests are included for both platforms to satisfy App Store requirements.
_packages/connectivity\_plus/connectivity\plus/ios · high confidence
Test coverage
Add integration tests for network\_info\_plus; Added Android activity tests for connectivity\_plus and package\_info\_plus example apps; Added Android example app test infrastructure; Added Android instrumentation test for background alarm execution; Added Android unit and integration tests for android\_intent\_plus; Added integration test for accelerometer events on Android; Added integration tests for Android Alarm Manager example app; Added integration tests for device\_info\_plus across all platforms; Added platform-specific and unit tests for network\_info\_plus; Added platform-specific unit tests for Linux, Windows, and Web implementations; Added tests for Linux connectivity, satellite support, and utility extensions; Added tests for multi-connectivity and satellite support; Added tests for network info platform interface methods; Added unit tests for AndroidAlarmManager initialization and scheduling; Added unit tests for AndroidIntent launch and resolution methods; Added unit tests for MethodChannelDeviceInfo; Added unit tests for platform device info models; Added unit tests for sensor event streams; Added unit tests for share\_plus platform implementations; Added unit tests for the Battery Plus Linux plugin and main API; Added unit tests for the share\_plus platform interface; Added widget test for the example app.
Dependencies
Updated Gradle wrapper to version 8.14
The example project's Gradle wrapper has been upgraded to use Gradle 8.14. This ensures that the example app builds with a modern version of the Gradle build tool, which may be required for compatibility with newer Android Gradle Plugin versions or to leverage recent Gradle features and performance improvements.
(repo-wide) · high confidence
android\_alarm\_manager\_plus: Migrate Android build to Kotlin DSL and upgrade to AGP 8.12.1
The android\_alarm\_manager\_plus plugin's Android build configuration has been migrated from Groovy to Kotlin DSL (build.gradle.kts). The Android Gradle Plugin is upgraded to version 8.12.1, and the Kotlin version is set to 2.2.0. The plugin now targets Java 17 and requires a minimum SDK of 21. The example app has also been updated to use Kotlin DSL, AGP 8.12.1, and Kotlin 2.2.20, with updated test dependencies (Espresso 3.7.0, JUnit 4.13.2).
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 65.
Lenses
- Code Health 97
- Architecture 99
- Maturity 53
- Readiness 77
- Security 62
- Domain Modelling 100
Changes since last survey
- 300 commits — 220 feature/other, 80 fixes
By area
- packages/device_info_plus — 58 commits
- packages/share_plus — 41 commits
- packages/connectivity_plus — 31 commits
- packages/package_info_plus — 31 commits
- packages/battery_plus — 29 commits
- .github/workflows — 26 commits
- packages/network_info_plus — 20 commits
- packages/sensors_plus — 18 commits
- packages/android_alarm_manager_plus — 17 commits
- packages/android_intent_plus — 16 commits
- (root) — 9 commits
- .github/ISSUE_TEMPLATE — 2 commits
- .github/PULL_REQUEST_TEMPLATE.md — 1 commit
- .github/dependabot.yml — 1 commit
Notable commits
- fix: Revert "chore(deps): bump flutter_lints from 5.0.0 to 6.0.0 in /packages/android_alarm_manager_plus/example (#3592)"
- fix: chore(android_alarm_manager_plus): fix analysis issues in comments (#3514)
- fix: chore(battery_plus): fix analysis issues in example (#3515)
- fix: chore(device_info_plus): fix analysis issues in plugin and tests (#3518)
- fix: chore(network_info_plus): Fix imports on wasm (#3530)
- fix: ci(android_alarm_manager_plus): Fix integration test example package name (#3140)
- fix: ci(connectivity_plus): fix macOS/iOS example build with Swift Package Manager (#3938)
- fix: ci(share_plus): fix macOS/iOS example build with Swift Package Manager (#3932)
- fix: fix(alarm_manager_plus): removed import that broke build (#3477)
- fix: fix(all): Add macOS Privacy Manifests (#3251)
- fix: fix(all): Clean up macOS Privacy Manifests (#3268)
- fix: fix(all): changed homepage url in pubspec.yaml (#3099)
- fix: fix(android_alarm_manager_plus): catch NPE in AlarmService (#3924)
- fix: fix(android_alarm_manager_plus): set correct environment versions (#3420)
- fix: fix(android_intent_plus): Suppress unchecked cast warnings in MethodCallHandlerImpl (#3937)
- fix: fix(android_intent_plus): adds error catching and forwarding (#3452)
- fix: fix(android_intent_plus): set correct environment versions (#3421)
- fix: fix(battery_plus): Bring back entry needed by the iOS privacy manifest (#3323)
- fix: fix(battery_plus): Do not call hidden flag on Samsung with Android versions >= 12 (#3641)
- fix: fix(battery_plus): Fix crash when retrieving battery level on desktop Mac. (#3155)
- …and 280 more
Architecture
- 0 containers · 2 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
fluttercommunity/plus_plugins was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 13e170479b3c66c890fa401f5fdb3af141faf67a — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.