Hola, Amigos! На связи Владимир Зевеке, соавтор Flutter. Много. Сегодня поделюсь пакетом screen_brightness, который помогает управлять яркостью экрана. В моём случае, этот виджет понадобился для более эффективной работы barcode.
❗️Screen_brightness работает только на реальных устройствах, на эмуляторе пакет функционировать не будет.
Перейдем к практике: в нашем приложении есть страница, которая должна быть всегда яркой на 70%. Если при переходе на неё экран тусклый, то мы должны поднять яркость до тех самых 70%.
Сделаем это в отдельном методе, который будем вызывать в initState().
double brightness = 1.0;
@override
void initState() {
initBrightness();
super.initState();
}
Future<void> initBrightness() async {
brightness = await FlutterScreenWake.brightness;
if (brightness < 0.7) {
await FlutterScreenWake.setBrightness(0.7);
}
}
Перед изменением уровня яркости экрана, старый показатель мы записали в переменную brightness, чтобы вернуть пользовательские настройки яркости, когда покинем эту страницу.
return Material(
child: PopScope(
onPopInvoked: (value) async {
await FlutterScreenWake.setBrightness(brightness);
},
child: Scaffold(
appBar: AppBar(
backgroundColor: const Color(0xFF1A1A18),
leading: InkWell(
onTap: () async {
await FlutterScreenWake.setBrightness(brightness);
if (mounted) {
Navigator.of(context).pop();
}
},
<…>
),
),
body: <…>,
),
),
);
Готово!