Bài viết này mình sẽ giới thiệu cho các bạn học lập trình Flutter cơ bản biết cách kiểm tra trạng thái pin và phần trăm pin trong Flutter.
Với những bạn viết ứng dụng thì vẫn thường gặp các vấn đề khi người dùng chuyển điện thoại sang chế độ tiết kiệm pin hoặc khi phần trăm pin điện thoại quá thấp thì điện thoại sẽ giảm hiệu năng có thể dẫn đến ứng dụng anh em viết sẽ crash hoặc bug.
Nên với nhiều bạn sẽ check phần trăm pin và trạng thái sạc xem điện thoại có bị đưa vào chế độ tiết kiệm pin hay không? Để kiểm tra trạng thái pin, trạng thái sạc và phần trăm pin trong Flutter chúng ta sẽ sử dụng gói battery_plus.
Thông tin về battery_plus
Đây là package mình tìm thấy khá ổn và hỗ trợ nhiều nền tảng như Android, iOS, macOS, web, Linux, and Windows sẽ giúp bạn thấy tất cả thông tin về pin trên thiết bị của bạn.
Adding dependency
Để cài đặt bạn cần thêm thông tin package vào file pubspec.yaml và chạy câu lệnh pub get
dependencies:
battery_plus: ^3.0.2
Import Package
Chúng ta sẽ sử dụng class và method bằng cách thêm dòng dưới đây vào
import 'package:battery_plus/battery_plus.dart';
Sau khi import package thì bạn có thể sử dụng các tính năng của battery_plus vào project của mình.
Khởi tạo class Battery để sử dụng các method
//instantiate it
var _battery = Battery();
Lấy phần trăm pin trong Flutter
Chúng ta bây giờ có thể lấy thông tin về phần trăm pin trong Flutter bằng cách dùng battery.batteryLevel sau khi đã khởi tạo instanse
// Get current battery level
print(await _battery.batteryLevel);
Kiểm tra trạng thái của pin
Có 4 trạng thái pin mà package này kiểm tra được
- BatteryState.full: Pin ở trạng thái đầy
- BatteryState.charging: Pin đang sạc
- BatteryState.discharging: Pin đang được dùng
- BatteryState.unknown: Không rõ trạng thái
Để lấy ra trạng thái pin trong Flutter thì bạn cần dùng
_battery.onBatteryStateChanged.listen((BatteryState state) {
//battery state will be listen here
setState(() {
_batteryState = state;
});
})
Check chế độ Battery Save mode
Sử dụng _battery.isInBatterySaveMode để kiểm tra xem điện thoại có được đưa vào chế độ Battery Save mode không
final isInPowerSaveMode = await _battery.isInBatterySaveMode;
Như vậy là chúng ta đã đi qua cách sử dụng package này và giờ chúng ta sẽ áp dụng vào project thực thế
import 'dart:async';
import 'package:battery_plus/battery_plus.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.cyan,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final Battery _battery = Battery();
BatteryState? _batteryState;
StreamSubscription<BatteryState>? _batteryStateSubscription;
int _batteryLevel = 0;
late Timer timer;
bool? _isInPowerSaveMode;
@override
void initState() {
super.initState();
getBatteryState();
checkBatterSaveMode();
Timer.periodic(const Duration(seconds: 5), (timer) {
getBatteryLevel();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Battery Plus'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Battery State: $_batteryState', style: const TextStyle(fontSize: 18),),
Text('Battery Level: $_batteryLevel %', style: const TextStyle(fontSize: 18)),
Text("Is on low power mode: $_isInPowerSaveMode", style: const TextStyle(fontSize: 18) )
],
),
),
);
}
@override
void dispose() {
super.dispose();
if (_batteryStateSubscription != null) {
_batteryStateSubscription!.cancel();
}
}
void getBatteryState() {
_batteryStateSubscription =
_battery.onBatteryStateChanged.listen((BatteryState state) {
setState(() {
_batteryState = state;
});
});
}
getBatteryLevel() async {
final level = await _battery.batteryLevel;
setState(() {
_batteryLevel = level;
});
}
Future<void> checkBatterSaveMode() async {
final isInPowerSaveMode = await _battery.isInBatterySaveMode;
setState(() {
_isInPowerSaveMode = isInPowerSaveMode;
});
}
}
Output
Khi chạy thì kết quả sẽ như hình bên dưới. Với kết quả trên thì bạn có thể tùy chỉnh để hiển thị bằng hình ảnh cho sống động hơn.
Một số từ khóa bằng tiếng Anh để các bạn có thể tìm hiểu thêm như “battery check percentage“, “Get battery percentage flutter“, “Battery info Flutter“, “Battery plus Flutter“, “dart Battery state“.
Nếu bạn muốn học Lập trình Flutter cơ bản có thể xem qua Lập trình Flutter cơ bản trên 1kho.info. Và theo dõi Fanpage 1Kho.info để theo dõi những bài mới nhất https://www.facebook.com/1kho.info