screen_brightness 2.0.0+2 copy "screen_brightness: ^2.0.0+2" to clipboard
screen_brightness: ^2.0.0+2 copied to clipboard

A Plugin for controlling screen brightness with application life cycle reset implemented

screen_brightness #

A Plugin for controlling screen brightness with application life cycle reset implemented.

This plugin only changes application brightness not system brightness. So no permission is needed for this plugin.

Getting Started #

Install #

Add the following lines in your pubspec.yaml file

  screen_brightness: ^latest_version

latest_version:
pub package

To adjust the system brightness on Android, add the following permission in your AndroidManifest.xml file

<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions"/>

API #

System brightness

Future<double> get systemBrightness async {
  try {
    return await ScreenBrightness.instance.system;
  } catch (e) {
    print(e);
    throw 'Failed to get system brightness';
  }
}

Set system brightness

  Future<void> setSystemBrightness(double brightness) async {
  try {
    await ScreenBrightness.instance.setSystemScreenBrightness(brightness);
  } catch (e) {
    debugPrint(e.toString());
    throw 'Failed to set system brightness';
  }
}

Application brightness

Future<double> get applicationBrightness async {
  try {
    return await ScreenBrightness.instance.application;
  } catch (e) {
    print(e);
    throw 'Failed to get application brightness';
  }
}

Set application brightness

Future<void> setApplicationBrightness(double brightness) async {
  try {
    await ScreenBrightness.instance
        .setApplicationScreenBrightness(brightness);
  } catch (e) {
    debugPrint(e.toString());
    throw 'Failed to set application brightness';
  }
}

Reset application brightness

  Future<void> resetApplicationBrightness() async {
  try {
    await ScreenBrightness.instance.resetApplicationScreenBrightness();
  } catch (e) {
    debugPrint(e.toString());
    throw 'Failed to reset application brightness';
  }
}

System brightness changed stream

@override
Widget build(BuildContext context) {
  return StreamBuilder<double>(
    stream:
    ScreenBrightness.instance.onSystemScreenBrightnessChanged,
    builder: (context, snapshot) {
      double changedSystemBrightness = systemBrightness;
      if (snapshot.hasData) {
        changedSystemBrightness = snapshot.data!;
      }
      
      return Text('system brightness $changedSystemBrightness');;
    },
  );
}

Application brightness changed stream

@override
Widget build(BuildContext context) {
  return StreamBuilder<double>(
    stream:
    ScreenBrightness.instance.onApplicationScreenBrightnessChanged,
    builder: (context, snapshot) {
      double changedApplicationBrightness = applicationBrightness;
      if (snapshot.hasData) {
        changedApplicationBrightness = snapshot.data!;
      }

      return Text('application brightness $changedApplicationBrightness');;
    },
  );
}

Has application brightness changed

@override
Widget build(BuildContext context) {
  return FutureBuilder<bool>(
    future: ScreenBrightness.instance.hasApplicationScreenBrightnessChanged,
    builder: (context, snapshot) {
      return Text(
          'Application brightness has changed via plugin: ${snapshot.data}');
    },
  );
}

Auto reset

bool isAutoReset = true;

Future<void> getIsAutoResetSetting() async {
  final isAutoReset = await ScreenBrightness.instance.isAutoReset;
  setState(() {
    this.isAutoReset = isAutoReset;
  });
}

@override
Widget build(BuildContext context) {
  return Switch(
    value: isAutoReset,
    onChanged: (value) async {
      await ScreenBrightness.instance.setAutoReset(value);
      await getIsAutoResetSetting();
    },
  );
}

Usage #

  • DON'T use didChangeAppLifecycleState to set or reset brightness because this plugin already implemented this function.
  • You may also use this plugin with wakelock to prevent screen sleep

Maintainer #

Jack Liu