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); +}