44 lines
1.4 KiB
Dart
44 lines
1.4 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:hiddify/core/localization/translations.dart';
|
|
import 'package:hiddify/features/settings/notifier/platform_settings_notifier.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
class PlatformSettingsTiles extends HookConsumerWidget {
|
|
const PlatformSettingsTiles({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final t = ref.watch(translationsProvider);
|
|
|
|
final isIgnoringBatteryOptimizations =
|
|
ref.watch(ignoreBatteryOptimizationsProvider);
|
|
|
|
ListTile buildIgnoreTile(bool enabled) => ListTile(
|
|
title: Text(t.settings.general.ignoreBatteryOptimizations),
|
|
subtitle: Text(t.settings.general.ignoreBatteryOptimizationsMsg),
|
|
leading: const Icon(FluentIcons.battery_saver_24_regular),
|
|
enabled: enabled,
|
|
onTap: () async {
|
|
await ref
|
|
.read(ignoreBatteryOptimizationsProvider.notifier)
|
|
.request();
|
|
},
|
|
);
|
|
|
|
return Column(
|
|
children: [
|
|
if (Platform.isAndroid)
|
|
switch (isIgnoringBatteryOptimizations) {
|
|
AsyncData(:final value) when value == false =>
|
|
buildIgnoreTile(true),
|
|
AsyncData(:final value) when value == true => const SizedBox(),
|
|
_ => buildIgnoreTile(false),
|
|
},
|
|
],
|
|
);
|
|
}
|
|
}
|