From a1aa5529475053a556ba6e594a6313cbccbb1f87 Mon Sep 17 00:00:00 2001 From: Felix Bruns Date: Thu, 9 May 2024 16:44:24 +0200 Subject: [PATCH] Raspberrypi screen on and off toggle --- .../proxmox_lister_list_view.dart | 7 ++++ lib/src/screen_helper.dart | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 lib/src/screen_helper.dart diff --git a/lib/src/proxmox_lister/proxmox_lister_list_view.dart b/lib/src/proxmox_lister/proxmox_lister_list_view.dart index a4839bb..f1efa51 100644 --- a/lib/src/proxmox_lister/proxmox_lister_list_view.dart +++ b/lib/src/proxmox_lister/proxmox_lister_list_view.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:pi_dashboard/src/proxmox_webservice/model.dart'; import 'package:pi_dashboard/src/proxmox_webservice/service.dart'; +import 'package:pi_dashboard/src/screen_helper.dart'; import 'package:pi_dashboard/src/settings/settings_controller.dart'; import 'package:pi_dashboard/src/settings/settings_service.dart'; import '../settings/settings_view.dart'; @@ -72,6 +73,12 @@ class _ProxmoxListerState extends State { appBar: AppBar( title: const Text("Proxmox VMs"), actions: [ + IconButton( + icon: const Icon(Icons.nightlight), + onPressed: () { + toggleScreen(); + }, + ), IconButton( icon: const Icon(Icons.sync), onPressed: () { diff --git a/lib/src/screen_helper.dart b/lib/src/screen_helper.dart new file mode 100644 index 0000000..404e020 --- /dev/null +++ b/lib/src/screen_helper.dart @@ -0,0 +1,34 @@ +import 'dart:io'; + +const _off = "1"; +const _on = "0"; + +Future toggleScreen() async { + if (await isScreenOff()) { + turnOncreen(); + } else { + turnOffScreen(); + } +} + +Future turnOffScreen() async { + await setBlFile(_off); +} + +Future turnOncreen() async { + await setBlFile(_on); +} + +File blFile() { + return File("/sys/class/backlight/10-0045/bl_power"); +} + +Future isScreenOff() async { + final status = await blFile().readAsString(); + if (status.startsWith(_on)) return false; + return true; +} + +Future setBlFile(String content) async { + await blFile().writeAsString(content); +}