fluttercommunity / fluttercommunity/plus_plugins

[Request]: Support tracking all battery aspects

Aperta
#3,448 6 commenti 69 reazioni 0 assegnatari Vedi su GitHub
enhancement triage
Lingua principale
Dart
Stelle
1.9k
Fork
1.3k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

### Plugin

battery_plus

### Use case

At the moment, there is no option to track changes in battery level or any other aspect. However, for many apps, it would be quite reasonable to react to such changes, by displaying a snackbar message or sending analytics data.

iOS provides support for this functionality:
[Documentation for level notification](https://developer.apple.com/documentation/uikit/uidevice/batteryleveldidchangenotification?language=objc)
[Documentation for power save mode notification](https://developer.apple.com/documentation/foundation/nsprocessinfopowerstatedidchangenotification)

```swift
Publishers.Merge3(
NotificationCenter.default.publisher(for: UIDevice.batteryLevelDidChangeNotification),
NotificationCenter.default.publisher(for: UIDevice.batteryStateDidChangeNotification),
NotificationCenter.default.publisher(for: NSNotification.Name.NSProcessInfoPowerStateDidChange)
)
.sink { _ in self.onBatteryInfoChanged() }
```

Android also supports monitoring battery level changes:
[Documentation](https://developer.android.com/training/monitoring-device-state/battery-monitoring)
[Power save mode changed notification](https://developer.android.com/reference/android/os/PowerManager#ACTION_POWER_SAVE_MODE_CHANGED)

```kotlin
applicationContext?.registerReceiver(
this,
IntentFilter().apply {
addAction(Intent.ACTION_BATTERY_CHANGED)
addAction(Intent.ACTION_BATTERY_LOW)
addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)
}
)
```

I’m not entirely sure about other platforms, but I would expect similar functionality to be available.

### Proposal

```dart
class BatteryInfo {
final double level;
final bool isLow;
final bool isInBatterySaveMode;
final BatteryState state;
}

battery.onBatteryInfoChanged.listen((BatteryInfo info) {
// Do something with new info
});
```

I actually already have an implementation for iOS and Android and would be happy to contribute if this proposal is considered useful.

@mhadaily cc

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Esamina il plugin battery_plus e le API di notifica iOS e Android collegate nell’issue, iniziando dall’implementazione iOS e Android esistente a cui fa riferimento l’autore. Conferma le piattaforme supportate e i campi di BatteryInfo, quindi verifica che le modifiche al livello della batteria, allo stato della batteria e al risparmio energetico vengano fornite tramite lo stream proposto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
dart, flutter, kotlin, swift
Ambito
mobile
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.