import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hive_flutter/hive_flutter.dart'; import '../ui/tema/fluent_tema.dart'; import '../ui/tema/material_dark_tema.dart'; import '../ui/tema/ozel_fiko_tema.dart'; import '../ui/tema/shadcn_minimal_tema.dart'; import '../ui/tema/tema_kaydedici.dart'; class TemaAyari { final TemaTuru tur; final bool aydinlik; final Color aksan; const TemaAyari({ required this.tur, required this.aydinlik, required this.aksan, }); ThemeData get tema { switch (tur) { case TemaTuru.ozelFiko: return aydinlik ? OzelFikoTema.aydinlik(aksan) : OzelFikoTema.karanlik(aksan); case TemaTuru.materialDark: return MaterialDarkTema.olustur(aydinlik: aydinlik, aksan: aksan); case TemaTuru.fluent: return FluentTema.olustur(aydinlik: aydinlik, aksan: aksan); case TemaTuru.shadcnMinimal: return ShadcnMinimalTema.olustur(aydinlik: aydinlik, aksan: aksan); } } TemaAyari kopyala({TemaTuru? tur, bool? aydinlik, Color? aksan}) => TemaAyari( tur: tur ?? this.tur, aydinlik: aydinlik ?? this.aydinlik, aksan: aksan ?? this.aksan, ); } class TemaNotifier extends StateNotifier { TemaNotifier() : super(const TemaAyari( tur: TemaTuru.ozelFiko, aydinlik: false, aksan: Color(0xFFFBBF24), )) { _yukle(); } Box? _kutu; Future _yukle() async { _kutu = await Hive.openBox('ayarlar'); final t = _kutu!.get('tema_tur', defaultValue: 'ozelFiko'); final a = _kutu!.get('tema_aydinlik', defaultValue: false); final r = _kutu!.get('tema_aksan', defaultValue: 0xFFFBBF24); state = TemaAyari( tur: TemaTuru.values.firstWhere( (e) => e.name == t, orElse: () => TemaTuru.ozelFiko, ), aydinlik: a as bool, aksan: Color(r as int), ); } void degistir(TemaAyari yeni) { state = yeni; _kutu?.put('tema_tur', yeni.tur.name); _kutu?.put('tema_aydinlik', yeni.aydinlik); _kutu?.put('tema_aksan', yeni.aksan.value); } } final temaProvider = StateNotifierProvider((ref) => TemaNotifier());