import 'package:fikoyt_akcali/apps/finans/base_page_mesaici_view.dart'; import 'package:fikoyt_akcali/apps/finans/model/ayarlar/model_ayarlar.dart'; import 'package:fikoyt_akcali/core/fikoyt.service.dart'; import 'package:fikoyt_akcali/core/widgets/fiko_ui/fiko_button/fiko_button.dart'; import 'package:fikoyt_akcali/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 KesintiEkle extends StatelessWidget { KesintiEkle({super.key, this.kesinti}); BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); // final FikoYTMesaiciService FikoYTService.servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); Kesinti? kesinti; late Rx kesintiObs = (kesinti ?? Kesinti()).obs; @override Widget build(BuildContext context) { kesintiObs.listen((val) { kesinti = val; // FikoYTService.servisMesaici.ayarlarModel!.refresh(); }); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Kesintiye Bir İsim Veriniz", ), Obx( () => FikoYaziKutusu( baslik: "Kesinti İsmi", simgeSol: const Text( "👩🏻‍🤝‍👨🏽", style: TextStyle( fontSize: 16, ), ), radius: 5.0, degeri: kesintiObs.value.ismi, degisti: (value) { kesintiObs.value.ismi = value; }, ), ), FikoAciklamaKutusu( baslik: "Kesinti Açıklama", radius: 5.0, degeri: kesintiObs.value.aciklama, yaziBoyutu: 12.0, degisti: (value) { kesintiObs.value.aciklama = value; }, ), /** */ Obx( () => Text.rich(TextSpan(text: "Kesinti Türü", children: [ TextSpan(text: " (${kesintiObs.value.turu.simge} ${kesintiObs.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 < KesintiTuruTumu.length; i++) Obx( () { KesintiTuru vrd = KesintiTuruTumu[i]; return Padding( padding: const EdgeInsets.symmetric( horizontal: 1, ), child: FikoButton1( text: "${vrd.simge} ${vrd.ismi}", borderColor: Colors.grey.shade400, backColor: kesintiObs.value.turu == KesintiTuruTumu[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: () { kesinti?.turu = KesintiTuruTumu[i]; kesintiObs.value.turu = KesintiTuruTumu[i]; kesintiObs.refresh(); // FikoYTService.servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = i; FikoYTService.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: "${kesintiObs.value.istisna}", degisti: (value) { if (value.isNum) { kesintiObs.value.istisna = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // FikoYTService.servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), /** */ Obx( () => Text.rich(TextSpan(text: "Kesinti Şekli", children: [ TextSpan(text: " (${kesintiObs.value.kesintiSekli.simge} ${kesintiObs.value.kesintiSekli.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 < KesintiSekliTumu.length; i++) Obx( () { KesintiSekli vrd = KesintiSekliTumu[i]; return Padding( padding: const EdgeInsets.symmetric( horizontal: 1, ), child: FikoButton1( text: "${vrd.simge} ${vrd.ismi}", borderColor: Colors.grey.shade400, backColor: kesintiObs.value.kesintiSekli == KesintiSekliTumu[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: () { kesinti?.kesintiSekli = KesintiSekliTumu[i]; kesintiObs.value.kesintiSekli = KesintiSekliTumu[i]; kesintiObs.refresh(); // FikoYTService.servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = i; FikoYTService.servisMesaici.ayarlarModel!.refresh(); }, ), ).animate( effects: [const FadeEffect(), ShimmerEffect(delay: 1000.ms)], ); }, ), const SizedBox( width: 20, ), ], ), ), ), /** */ Obx( () => AnimatedSwitcher( duration: const Duration(seconds: 1), transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 1.0, child: child, ), ); }, // layoutBuilder: (Widget? currentChild, List previousChildren) { // return Stack( // alignment: Alignment.center, // children: [ // ...previousChildren, // if (currentChild != null) currentChild, // ], // ); // }, child: kesintiObs.value.kesintiSekli == KesintiSekli.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: "${kesintiObs.value.oran}", degisti: (value) { if (value.isNum) { kesintiObs.value.oran = double.parse(value.replaceAll("%", "").replaceAll(",", "")); // FikoYTService.servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), ], ) : kesintiObs.value.kesintiSekli == KesintiSekli.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: "${kesintiObs.value.miktar}", degisti: (value) { if (value.isNum) { kesintiObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // FikoYTService.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: "${kesintiObs.value.oran}", degisti: (value) { if (value.isNum) { kesintiObs.value.oran = double.parse(value.replaceAll("%", "").replaceAll(",", "")); // FikoYTService.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: "${kesintiObs.value.miktar}", degisti: (value) { if (value.isNum) { kesintiObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // FikoYTService.servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), ], ), ), ), /** */ Obx( () => Row( children: [ const Text("➕ Gelir Vergisi Matrahından Düş"), const Spacer(), SizedBox( height: 25, child: FittedBox( fit: BoxFit.fill, child: Switch( value: kesintiObs.value.GVMatrahindanDus ?? true, onChanged: (value) { kesintiObs.value.GVMatrahindanDus = value; kesintiObs.refresh(); }, ), ), ), ], ), ), ], ); } }