Flutter屏幕亮度控制插件system_screen_brightness的使用

Flutter屏幕亮度控制插件system_screen_brightness的使用

简介

system_screen_brightness 是一个用于控制屏幕亮度的插件。

开始使用

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  system_screen_brightness: ^latest_version

然后运行 flutter pub get 来安装依赖。

API

获取当前系统亮度

Future<double> getCurrentBrightness() async {
  try {
    return await SystemScreenBrightness().currentBrightness;
  } catch (e) {
    print(e);
    throw 'Failed to get system current brightness';
  }
}

设置系统屏幕亮度

Future<void> setSystemScreenBrightness(double brightness) async {
  try {
    await SystemScreenBrightness.setSystemScreenBrightness(brightness);
  } catch (e) {
    print(e);
    throw 'Failed to set system screen brightness';
  }
}

完整示例代码

下面是一个完整的示例代码,展示了如何使用 system_screen_brightness 插件来控制屏幕亮度。

import 'dart:ui';

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:system_screen_brightness/system_screen_brightness.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  double _brightness = 0.0;
  bool _isPermission = false;
  double _currentBrightness = 0.0;
  late final SystemScreenBrightness _systemScreenBrightnessPlugin = SystemScreenBrightness();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  initPlatformState() async {
    await initPlatformState1();
    await initPlatformState2();
  }

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> initPlatformState1() async {
    double brightness;
    // 平台消息可能会失败,所以我们使用带有 PlatformException 的 try/catch。
    // 我们还处理消息可能返回 null 的情况。
    try {
      brightness = await _systemScreenBrightnessPlugin.currentBrightness;
    } on PlatformException {
      brightness = 0.0;
    }
    if (!mounted) return;

    setState(() {
      _currentBrightness = brightness;
    });
  }

  Future<bool?> initPlatformState2() async {
    bool hasPermission;
    try {
      hasPermission = await _systemScreenBrightnessPlugin.checkSystemWritePermission;
    } on PlatformException {
      hasPermission = false;
    }

    setState(() {
      _isPermission = hasPermission;
    });

    return hasPermission;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('设置系统屏幕亮度应用'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Column(
              children: [
                Switch(
                  value: _isPermission,
                  onChanged: (value) async {
                    await _systemScreenBrightnessPlugin.openAndroidPermissionsMenu();
                    _isPermission = value;
                    setState(() {});
                  },
                ),
                Text(_isPermission.toString()),
                ElevatedButton(
                  onPressed: () async {
                    double brightness = await _systemScreenBrightnessPlugin.currentBrightness;
                    print(brightness);
                  },
                  child: Icon(Icons.power_settings_new),
                ),
                Text(_currentBrightness.toString())
              ],
            ),
            Column(
              children: [
                Slider(
                    value: _brightness,
                    min: 0.0,
                    max: 1.0,
                    onChanged: ((double value) {
                      _brightness = value;
                      _systemScreenBrightnessPlugin.setSystemScreenBrightness((value * 255).toInt());
                      setState(() {});
                    })
                ),
                Text(_brightness.toString()),
              ],
            )
          ],
        ),
      ),
    );
  }
}

更多关于Flutter屏幕亮度控制插件system_screen_brightness的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter屏幕亮度控制插件system_screen_brightness的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


system_screen_brightness 是一个用于控制设备屏幕亮度的 Flutter 插件。它允许你在 Flutter 应用中获取和设置屏幕亮度。以下是使用 system_screen_brightness 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 system_screen_brightness 依赖:

dependencies:
  flutter:
    sdk: flutter
  system_screen_brightness: ^0.1.0 # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 获取当前屏幕亮度

你可以使用 SystemScreenBrightness.brightness 来获取当前屏幕亮度。亮度值范围是 0 到 1,其中 0 表示最暗,1 表示最亮。

import 'package:system_screen_brightness/system_screen_brightness.dart';

Future<void> getCurrentBrightness() async {
  try {
    double brightness = await SystemScreenBrightness.brightness;
    print("Current brightness: $brightness");
  } catch (e) {
    print("Failed to get brightness: $e");
  }
}

3. 设置屏幕亮度

你可以使用 SystemScreenBrightness.setBrightness 来设置屏幕亮度。亮度值应在 0 到 1 之间。

import 'package:system_screen_brightness/system_screen_brightness.dart';

Future<void> setBrightness(double brightness) async {
  try {
    await SystemScreenBrightness.setBrightness(brightness);
    print("Brightness set to $brightness");
  } catch (e) {
    print("Failed to set brightness: $e");
  }
}

4. 重置屏幕亮度

你可以使用 SystemScreenBrightness.resetBrightness 来重置屏幕亮度到系统默认值。

import 'package:system_screen_brightness/system_screen_brightness.dart';

Future<void> resetBrightness() async {
  try {
    await SystemScreenBrightness.resetBrightness();
    print("Brightness reset to system default");
  } catch (e) {
    print("Failed to reset brightness: $e");
  }
}

5. 处理异常

在使用插件时,可能会抛出异常,例如权限问题或平台不支持。你应该在代码中处理这些异常。

6. 权限

在某些平台上,控制屏幕亮度可能需要特定的权限。请确保在 Android 和 iOS 上配置适当的权限。

示例代码

以下是一个完整的示例,展示了如何使用 system_screen_brightness 插件获取、设置和重置屏幕亮度:

import 'package:flutter/material.dart';
import 'package:system_screen_brightness/system_screen_brightness.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BrightnessControlScreen(),
    );
  }
}

class BrightnessControlScreen extends StatefulWidget {
  [@override](/user/override)
  _BrightnessControlScreenState createState() => _BrightnessControlScreenState();
}

class _BrightnessControlScreenState extends State<BrightnessControlScreen> {
  double _brightness = 0.5;

  Future<void> _getCurrentBrightness() async {
    try {
      double brightness = await SystemScreenBrightness.brightness;
      setState(() {
        _brightness = brightness;
      });
      print("Current brightness: $brightness");
    } catch (e) {
      print("Failed to get brightness: $e");
    }
  }

  Future<void> _setBrightness(double brightness) async {
    try {
      await SystemScreenBrightness.setBrightness(brightness);
      print("Brightness set to $brightness");
    } catch (e) {
      print("Failed to set brightness: $e");
    }
  }

  Future<void> _resetBrightness() async {
    try {
      await SystemScreenBrightness.resetBrightness();
      print("Brightness reset to system default");
    } catch (e) {
      print("Failed to reset brightness: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Screen Brightness Control'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Current Brightness: $_brightness'),
            Slider(
              value: _brightness,
              onChanged: (value) {
                setState(() {
                  _brightness = value;
                });
                _setBrightness(value);
              },
            ),
            ElevatedButton(
              onPressed: _getCurrentBrightness,
              child: Text('Get Current Brightness'),
            ),
            ElevatedButton(
              onPressed: _resetBrightness,
              child: Text('Reset Brightness'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部