Hướng dẫn cách kiểm tra trạng thái pin và phần trăm pin trong Flutter

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.

Hướng dẫn cách kiểm tra trạng thái pin và phần trăm pin trong Flutter
Hướng dẫn 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

  1. BatteryState.full: Pin ở trạng thái đầy
  2. BatteryState.charging: Pin đang sạc
  3. BatteryState.discharging: Pin đang được dùng
  4. 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.

battery check state

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

5 2 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x