user_status_collector 0.1.1 copy "user_status_collector: ^0.1.1" to clipboard
user_status_collector: ^0.1.1 copied to clipboard

Collects device, network, battery, and foreground location status for upload.

user_status_collector #

Collects device, network, battery, and foreground location status from a Flutter app and serializes it into an upload-ready JSON payload.

The plugin does not upload data. Keep upload, authentication, retry, and endpoint handling in your app layer.

Features #

  • Device: platform, OS version, model, manufacturer or brand, device name, physical-device flag.
  • Network: connectivity types and Wi-Fi name when available.
  • Battery: level, charging state, battery saver state.
  • Location: foreground latitude, longitude, accuracy, timestamp, province, city, address, and whether the result comes from current or last-known position.
  • Graceful fallback: failed readers return status values such as unavailable, permission_denied, or service_disabled, and location falls back to lastKnownPosition when a fresh fix is unavailable.

Usage #

import 'package:user_status_collector/user_status_collector.dart';

final collector = UserStatusCollector();
final snapshot = await collector.collect(trigger: UserStatusTrigger.login);

await upload(snapshot.toJson());

Permissions #

This plugin uses foreground location and Wi-Fi related APIs through Flutter plugins. Your host app is responsible for declaring platform permissions and user-facing permission descriptions.

For Android, add the permissions needed by your app, for example:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

For iOS, add the location usage descriptions your app needs, for example:

<key>NSLocationWhenInUseUsageDescription</key>
<string>This app uses your location to include foreground location status in diagnostic uploads.</string>

Local development #

fvm flutter test
fvm dart format --page-width 120 lib test example/lib example/test example/integration_test

Before publishing, replace the package metadata such as repository URL and license ownership.