Files

42 lines
1.1 KiB
Dart
Raw Permalink Normal View History

2026-07-14 11:11:36 +08:00
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'shared/settings_persistence.dart';
enum PlayerEngineOverride {
auto('自动'),
fvp('fvp (libmdk)'),
mpv('mpv (media_kit)'),
media3('Media3 (ExoPlayer+FFmpeg)');
final String label;
const PlayerEngineOverride(this.label);
}
class PlayerEngineOverrideNotifier extends AsyncNotifier<PlayerEngineOverride>
with SettingsPersistence {
static const _key = 'smplayer.player_engine_override';
@override
Future<PlayerEngineOverride> build() async {
final prefs = await getPrefs();
final raw = prefs.getString(_key);
if (raw == null) return PlayerEngineOverride.auto;
try {
return PlayerEngineOverride.values.byName(raw);
} catch (_) {
return PlayerEngineOverride.auto;
}
}
Future<void> setOverride(PlayerEngineOverride value) async {
state = AsyncValue.data(value);
await persistField(_key, value.name);
}
}
final playerEngineOverrideProvider =
AsyncNotifierProvider<PlayerEngineOverrideNotifier, PlayerEngineOverride>(
PlayerEngineOverrideNotifier.new,
);