75 lines
2.4 KiB
Dart
75 lines
2.4 KiB
Dart
|
|
import 'dart:io';
|
||
|
|
|
||
|
|
import 'package:flutter/material.dart';
|
||
|
|
import 'package:forui/forui.dart';
|
||
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
|
|
|
||
|
|
import '../../../providers/audio_settings_provider.dart';
|
||
|
|
import '../../../shared/widgets/setting_select.dart';
|
||
|
|
import '../utils/settings_labels.dart';
|
||
|
|
import '../widgets/settings_card.dart';
|
||
|
|
|
||
|
|
class AudioSettingsTab extends ConsumerWidget {
|
||
|
|
const AudioSettingsTab({super.key});
|
||
|
|
|
||
|
|
@override
|
||
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
||
|
|
final audioSettings = ref.watch(audioSettingsProvider);
|
||
|
|
|
||
|
|
return SettingsTabScroll(
|
||
|
|
children: [
|
||
|
|
audioSettings.when(
|
||
|
|
data: (data) => Column(
|
||
|
|
children: [
|
||
|
|
SettingsCard(
|
||
|
|
children: [
|
||
|
|
SettingRow(
|
||
|
|
title: '记住所选音轨',
|
||
|
|
trailing: FSwitch(
|
||
|
|
value: data.rememberAudioTrack,
|
||
|
|
onChange: (v) => ref
|
||
|
|
.read(audioSettingsProvider.notifier)
|
||
|
|
.setRememberAudioTrack(v),
|
||
|
|
),
|
||
|
|
),
|
||
|
|
SettingRow(
|
||
|
|
title: '音频首选语言',
|
||
|
|
trailing: SettingSelect<String>(
|
||
|
|
value: data.preferredAudioLanguage,
|
||
|
|
options: const ['', 'chi', 'eng', 'jpn'],
|
||
|
|
labelOf: audioLangLabel,
|
||
|
|
onChanged: (v) {
|
||
|
|
if (v != null) {
|
||
|
|
ref
|
||
|
|
.read(audioSettingsProvider.notifier)
|
||
|
|
.setPreferredAudioLanguage(v);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
),
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
if (!Platform.isAndroid)
|
||
|
|
SettingsCard(
|
||
|
|
children: [
|
||
|
|
SettingRow(
|
||
|
|
title: '音频增强',
|
||
|
|
trailing: FSwitch(
|
||
|
|
value: data.volumeBoost,
|
||
|
|
onChange: (v) => ref
|
||
|
|
.read(audioSettingsProvider.notifier)
|
||
|
|
.setVolumeBoost(v),
|
||
|
|
),
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
loading: () => const SizedBox.shrink(),
|
||
|
|
error: (e, _) => settingsLoadError(e),
|
||
|
|
),
|
||
|
|
],
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|