import 'package:fikoyt_mesaici/apps/mesaici/base_page_mesaici_view.dart'; import 'package:fikoyt_mesaici/apps/mesaici/model/ayarlar/model_ayarlar.dart'; import 'package:fikoyt_mesaici/apps/mesaici/servisler/fikoyt.mesaici.service.dart'; import 'package:fikoyt_mesaici/core/fikoyt.service.dart'; import 'package:fikoyt_mesaici/core/widgets/fiko_ui/fiko_button/fiko_button.dart'; import 'package:fikoyt_mesaici/core/widgets/yazi_kutulari/yazi_kutulari.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:get/get.dart'; class VergiEkle extends StatelessWidget { VergiEkle({super.key, this.vergi}); BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); final FikoYTMesaiciService servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); Vergi? vergi; late Rx vergiObs = (vergi ?? Vergi()).obs; @override Widget build(BuildContext context) { vergiObs.listen((val) { vergi = val; // servisMesaici.ayarlarModel!.refresh(); }); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Vergiye Bir İsim Veriniz", ), Obx( () => FikoYaziKutusu( baslik: "Vergi İsmi", simgeSol: const Text( "👩🏻‍🤝‍👨🏽", style: TextStyle( fontSize: 16, ), ), radius: 5.0, degeri: vergiObs.value.ismi, degisti: (value) { vergiObs.value.ismi = value; }, ), ), FikoAciklamaKutusu( baslik: "Vergi Açıklama", radius: 5.0, degeri: vergiObs.value.aciklama, yaziBoyutu: 12.0, degisti: (value) { vergiObs.value.aciklama = value; }, ), /** */ Obx( () => Text.rich(TextSpan(text: "Vergi Türü", children: [ TextSpan(text: " (${vergiObs.value.turu.simge} ${vergiObs.value.turu.ismi})", style: const TextStyle(fontWeight: FontWeight.w600)), ])), ), SizedBox( height: 22, child: ShaderMask( shaderCallback: (Rect rect) { return const LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [Colors.purple, Colors.transparent, Colors.transparent, Colors.purple], stops: [0.0, 0.1, 0.9, 1.0], // 10% purple, 80% transparent, 10% purple ).createShader(rect); }, blendMode: BlendMode.dstOut, child: ListView( shrinkWrap: true, physics: const BouncingScrollPhysics(), scrollDirection: Axis.horizontal, // your ListView children: [ const SizedBox( width: 20, ), for (var i = 0; i < VergiTuruTumu.length; i++) Obx( () { VergiTuru vrd = VergiTuruTumu[i]; return Padding( padding: const EdgeInsets.symmetric( horizontal: 1, ), child: FikoButton1( text: "${vrd.simge} ${vrd.ismi}", borderColor: Colors.grey.shade400, backColor: vergiObs.value.turu == VergiTuruTumu[i] ? Colors.blue.withOpacity(0.7) : Colors.black.withOpacity(0), edgePadding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), textColor: Colors.amberAccent, textStrokeColor: Colors.blue, onLongPress: () {}, onPressed: () { vergi?.turu = VergiTuruTumu[i]; vergiObs.value.turu = VergiTuruTumu[i]; vergiObs.refresh(); // servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = i; servisMesaici.ayarlarModel!.refresh(); }, ), ).animate( effects: [const FadeEffect(), ShimmerEffect(delay: 1000.ms)], ); }, ), const SizedBox( width: 20, ), ], ), ), ), /** */ const Text( "İstisna Miktarını Giriniz", ), FikoYaziKutusu( baslik: "İstisna Miktarı", simgeSol: const Text( "💸", style: TextStyle(fontSize: 16), ), sonEk: const Text("₺"), radius: 5.0, klavyeTipi: TextInputType.number, // formatlayicilar: [ // CurrencyInputFormatter( // // trailingSymbol: "₺", // ) // // MaskedInputFormatter( // // '00000-0000-M00-B00-N# ', // // allowedCharMatcher: RegExp("^[0-9]*\$"), // // ), // ], degeri: "${vergiObs.value.miktar}", degisti: (value) { if (value.isNum) { vergiObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), /** */ Obx( () => Text.rich(TextSpan(text: "Vergi Şekli", children: [ TextSpan(text: " (${vergiObs.value.vergiSekli.simge} ${vergiObs.value.vergiSekli.ismi})", style: const TextStyle(fontWeight: FontWeight.w600)), ])), ), SizedBox( height: 22, child: ShaderMask( shaderCallback: (Rect rect) { return const LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [Colors.purple, Colors.transparent, Colors.transparent, Colors.purple], stops: [0.0, 0.1, 0.9, 1.0], // 10% purple, 80% transparent, 10% purple ).createShader(rect); }, blendMode: BlendMode.dstOut, child: ListView( shrinkWrap: true, physics: const BouncingScrollPhysics(), scrollDirection: Axis.horizontal, // your ListView children: [ const SizedBox( width: 20, ), for (var i = 0; i < VergiSekliTumu.length; i++) Obx( () { VergiSekli vrd = VergiSekliTumu[i]; return Padding( padding: const EdgeInsets.symmetric( horizontal: 1, ), child: FikoButton1( text: "${vrd.simge} ${vrd.ismi}", borderColor: Colors.grey.shade400, backColor: vergiObs.value.vergiSekli == VergiSekliTumu[i] ? Colors.blue.withOpacity(0.7) : Colors.black.withOpacity(0), edgePadding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), textColor: Colors.amberAccent, textStrokeColor: Colors.blue, onLongPress: () {}, onPressed: () { vergi?.vergiSekli = VergiSekliTumu[i]; vergiObs.value.vergiSekli = VergiSekliTumu[i]; vergiObs.refresh(); // servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = i; servisMesaici.ayarlarModel!.refresh(); }, ), ).animate( effects: [const FadeEffect(), ShimmerEffect(delay: 1000.ms)], ); }, ), const SizedBox( width: 20, ), ], ), ), ), /** */ Obx( () => Column( children: [ vergiObs.value.turu == VergiTuru.DUZORAN ? AnimatedSwitcher( duration: const Duration(seconds: 1), transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 1.0, child: child, ), ); }, child: vergiObs.value.vergiSekli == VergiSekli.YUZDELIK ? Column( key: UniqueKey(), crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Oranı Giriniz", ), FikoYaziKutusu( baslik: "Yüzde Oranı", simgeSol: const Text( "💯", style: TextStyle(fontSize: 16), ), sonEk: const Text("%"), radius: 5.0, klavyeTipi: TextInputType.number, degeri: "${vergiObs.value.oran}", degisti: (value) { if (value.isNum) { vergiObs.value.oran = double.parse(value.replaceAll("%", "").replaceAll(",", "")); // servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), ], ) : vergiObs.value.vergiSekli == VergiSekli.SABIT ? /** */ Column( key: UniqueKey(), crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Ücret Miktarını Giriniz", ), FikoYaziKutusu( baslik: "Ücret Miktarı", simgeSol: const Text( "📌", style: TextStyle(fontSize: 16), ), sonEk: const Text("₺"), radius: 5.0, klavyeTipi: TextInputType.number, degeri: "${vergiObs.value.miktar}", degisti: (value) { if (value.isNum) { vergiObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), ], ) : Column( key: UniqueKey(), crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Oranı Giriniz", ), FikoYaziKutusu( baslik: "Yüzde Oranı", simgeSol: const Text( "💯", style: TextStyle(fontSize: 16), ), sonEk: const Text("%"), radius: 5.0, klavyeTipi: TextInputType.number, degeri: "${vergiObs.value.oran}", degisti: (value) { if (value.isNum) { vergiObs.value.oran = double.parse(value.replaceAll("%", "").replaceAll(",", "")); // servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), const Text( "Ücret Miktarını Giriniz", ), FikoYaziKutusu( baslik: "Ücret Miktarı", simgeSol: const Text( "📌", style: TextStyle(fontSize: 16), ), sonEk: const Text("₺"), radius: 5.0, klavyeTipi: TextInputType.number, degeri: "${vergiObs.value.miktar}", degisti: (value) { if (value.isNum) { vergiObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), ], ), ) : SizedBox.shrink(), ], ), ) /** */ ], ); } }