import 'package:fikoyt_merkez/apps/mesaici/base_page_mesaici_view.dart'; import 'package:fikoyt_merkez/apps/mesaici/model/model_ayarlar.dart'; import 'package:fikoyt_merkez/apps/mesaici/pages/ayarlar/calisma_sureleri/mola_dialog.dart'; import 'package:fikoyt_merkez/apps/mesaici/servisler/fikoyt.mesaici.service.dart'; import 'package:fikoyt_merkez/apps/mesaici/servisler/mesaici.ayarlar.dart'; import 'package:fikoyt_merkez/core/Extensions/fiko_duration_ext.dart'; import 'package:fikoyt_merkez/core/Extensions/fiko_tarih.dart'; import 'package:fikoyt_merkez/core/fikoyt.service.dart'; import 'package:fikoyt_merkez/core/interface/fiko_dialog_ayarlari.dart'; import 'package:fikoyt_merkez/core/widgets/dakika_secici/duration_picker.dart'; import 'package:fikoyt_merkez/core/widgets/fiko_ui/fiko_button/fiko_button.dart'; import 'package:fikoyt_merkez/core/widgets/yazi_kutulari/yazi_kutulari.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_multi_formatter/flutter_multi_formatter.dart'; import 'package:get/get.dart'; import 'package:getwidget/getwidget.dart'; import 'vardiye_ekle_dialog.dart'; class VardiyalarWidget extends StatelessWidget { VardiyalarWidget({Key? key}) : super(key: key); BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); final FikoYTMesaiciService servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); @override Widget build(BuildContext context) { return Obx( () => Column( children: [ /** */ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Expanded( child: Divider( indent: 20.0, endIndent: 10.0, thickness: 1, ), ), FikoButton1( text: servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar[servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya ?? 0].ismi ?? 'Vardiya Seçiniz', textStrokeColor: Colors.transparent, textColor: Colors.black45, onPressed: () {}, ), const Expanded( child: Divider( indent: 10.0, endIndent: 20.0, thickness: 1, ), ), SizedBox( width: 33, child: MaterialButton( elevation: 0, minWidth: 0, shape: CircleBorder( // borderRadius: // const BorderRadius.all( // Radius.circular(5)), side: BorderSide(width: 1, color: Colors.blue.withOpacity(0.5), style: BorderStyle.solid), ), padding: const EdgeInsets.all(0), // color: Colors.white, onPressed: () async { Vardiya vrd = Vardiya(); FikoYTService.dialogGoster( context, SizedBox( width: 250, // height: 300, child: VardiyaEkleDialog( vardiya: vrd, ), ), FikoDialogAyarlari(baslik: "Vardiya Ekle", baslikSimge: "➕", altButonlar: [ FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Ekle", onPressed: (() { List _vrdylr = servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.toList(); _vrdylr.add(vrd); servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar = _vrdylr; servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }), ), FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Kapat", onPressed: (() { Navigator.pop( context, ); }), ), ]), ); }, child: const Text("➕"), // const Icon(Icons.notifications, // color: Colors.lightBlue, size: 14), ), ), ], ), SizedBox( height: 10, ), /** */ if (servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.isEmpty) Padding( padding: const EdgeInsets.only(top: 30.0), child: Stack( children: [ Card( child: Container( height: 100.0, ), ), FractionalTranslation( translation: const Offset(0.0, -0.4), child: Align( alignment: const FractionalOffset(0.5, 0.0), child: CircleAvatar( // backgroundColor: Colors.redAccent.shade200, radius: 25.0, child: Image.asset( 'assets/mesaici/ayarlar/vardiya.png', // width: 300, width: 42, height: 42, fit: BoxFit.contain, ), ), ), ), Padding( padding: const EdgeInsets.only(top: 48), child: Align( alignment: const FractionalOffset(0.5, 0.5), child: Text( "Henüz Vardiya Kaydı Girilmemiş", style: TextStyle(fontSize: 16, fontWeight: FontWeight.w300, color: Colors.blueAccent.shade400), ), ), ), ], ), ) else // for (var vrd in servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar) Column( children: [ 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: [ for (var i = 0; i < servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.length; i++) Obx( () { Vardiya vrd = servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar[i]; return Padding( padding: const EdgeInsets.symmetric( horizontal: 4, ), child: FikoButton1( text: vrd.ismi ?? "İsim Verilmemiş", backColor: Colors.black.withOpacity(0.2), onLongPress: () { FikoYTService.dialogGoster( context, SizedBox( width: 250, child: VardiyaEkleDialog( vardiya: vrd, ), ), FikoDialogAyarlari(baslik: "Vardiya Düzenle", altButonlar: [ FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Sil", onPressed: () { List? _list = servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.toList(); _list.removeAt(i); servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar = _list; if (servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.isEmpty) { servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar = [Vardiya(ismi: "Sürekli Gündüz", aciklama: "Sürekli Gündüz Vardiyası")]; servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = 0; } if (servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya! > servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.length - 1) servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.length - 1; servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }, ), const Spacer(), FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Kapat", onPressed: (() { servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }), ), ]), ); }, onPressed: () { servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya = i; servisMesaici.ayarlarModel!.refresh(); }, ), ).animate( effects: [FadeEffect(), ShimmerEffect(delay: 1000.ms)], ); }, ), ], ), ), ), ], ), /** */ for (var i = 0; i < servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar[servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya ?? 0].gunAyarlari.toListe().length; i++) // (var gun in servisMesaici // .ayarlarModel! // .value // .calismaSuresiAyarlari // .vardiyalar[servisMesaici // .ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya ?? // 0] // .gunAyarlari // .toListe()) Obx( () { GunAyari gun = servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar[servisMesaici.ayarlarModel!.value.calismaSuresiAyarlari.aktifVardiya ?? 0].gunAyarlari.toListe()[i]; final Rx gunObs = gun.obs; gunObs.listen( (gn) { gun = gn; }, ); return GFAccordion( title: '🗓️ ${gunObs.value.ismi} Günü Ayarları', contentChild: Column( children: [ Padding( padding: const EdgeInsets.all(5), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( child: Obx( () => TextButton( onPressed: () { gunObs.value.turu = GunTuru.CALISMA_GUNU; servisMesaici.ayarlarModel!.refresh(); }, style: TextButton.styleFrom( alignment: Alignment.center, fixedSize: const Size.fromHeight(20), backgroundColor: gunObs.value.turu == GunTuru.CALISMA_GUNU ? Colors.teal : Colors.grey.shade200, shape: const BeveledRectangleBorder(borderRadius: BorderRadius.zero), foregroundColor: gunObs.value.turu == GunTuru.CALISMA_GUNU ? Colors.white : Colors.teal, textStyle: const TextStyle( fontSize: 10, fontWeight: FontWeight.bold, ), ), child: const Text('Çalışma Günü'), ), ), ), Expanded( child: Obx( () => TextButton( onPressed: () { gunObs.value.turu = GunTuru.DINLENME_GUNU; servisMesaici.ayarlarModel!.refresh(); }, style: TextButton.styleFrom( alignment: Alignment.center, fixedSize: const Size.fromHeight(20), backgroundColor: gunObs.value.turu == GunTuru.DINLENME_GUNU ? Colors.teal : Colors.grey.shade200, shape: const BeveledRectangleBorder(borderRadius: BorderRadius.zero), foregroundColor: gunObs.value.turu == GunTuru.DINLENME_GUNU ? Colors.white : Colors.teal, textStyle: const TextStyle( fontSize: 10, fontWeight: FontWeight.bold, ), ), child: const Text('Dinlenme Günü'), ), ), ), Expanded( child: Obx( () => TextButton( onPressed: () { gunObs.value.turu = GunTuru.HAFTA_TATILI; servisMesaici.ayarlarModel!.refresh(); }, style: TextButton.styleFrom( alignment: Alignment.center, fixedSize: const Size.fromHeight(20), backgroundColor: gunObs.value.turu == GunTuru.HAFTA_TATILI ? Colors.teal : Colors.grey.shade200, shape: const BeveledRectangleBorder(borderRadius: BorderRadius.zero), foregroundColor: gunObs.value.turu == GunTuru.HAFTA_TATILI ? Colors.white : Colors.teal, textStyle: const TextStyle( fontSize: 10, fontWeight: FontWeight.bold, ), ), child: const Text('Hafta Tatili'), ), ), ), ], ), ), const SizedBox( height: 5, ), Padding( padding: const EdgeInsets.all(5), child: Column( children: [ Row( children: [ Expanded( child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: Colors.grey.shade200, borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(10), topLeft: Radius.circular(10), ), ), child: const Text( "Giriş Saati", style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold), ), ), ), Expanded( child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: Colors.grey.shade200, borderRadius: const BorderRadius.only( bottomRight: Radius.circular(10), topRight: Radius.circular(10), ), ), child: const Text( "Çıkış Saati", style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold), ), ), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( child: FikoButton1( text: "${gunObs.value.girisSaati?.formatla('HH:mm:ss') ?? 'Yok'}", textStrokeWidth: 2, textSize: 16, textColor: Colors.red, textStrokeColor: Colors.amber, onPressed: () async { DateTime? rslt = await FikoYTService.saatSec(context, varsayilanTarih: DateTime(0, 0, 0, 0, 0, 0, 0, 0).ayarlaGununSaati(gunObs.value.girisSaati?.gununSaati() ?? DateTime(0, 0, 0, 0, 0, 0, 0, 0).gununSaati())); if (rslt == null) return; gunObs.value.girisSaati = rslt; // gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); // showTimePicker( // context: context, // initialTime: gun!.value.girisSaati.value) // .then((value) { // if (value != null) { // gun!.value.girisSaati.value = value; // } // }); }, ), ), Expanded( child: FikoButton1( text: "${gunObs.value.cikisSaati?.formatla('HH:mm:ss') ?? 'Yok'}", textStrokeWidth: 2, textSize: 16, textColor: Colors.green, textStrokeColor: Colors.tealAccent, onPressed: () async { DateTime? rslt = await FikoYTService.saatSec(context, varsayilanTarih: DateTime(0, 0, 0, 0, 0, 0, 0, 0).ayarlaGununSaati(gunObs.value.cikisSaati?.gununSaati() ?? DateTime(0, 0, 0, 0, 0, 0, 0, 0).gununSaati())); if (rslt == null) return; gunObs.value.cikisSaati = rslt; // gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); // showTimePicker( // context: context, // initialTime: gun!.value.cikisSaati.value) // .then((value) { // if (value != null) { // gun!.value.cikisSaati.value = value; // } // }); }, ), ), ], ), Row( children: [ Expanded( child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: Colors.grey.shade200, borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(10), topLeft: Radius.circular(10), ), ), child: const Text( "Giriş Toleransı", style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold), ), ), ), Expanded( child: Container( alignment: Alignment.center, decoration: BoxDecoration( color: Colors.grey.shade200, borderRadius: const BorderRadius.only( bottomRight: Radius.circular(10), topRight: Radius.circular(10), ), ), child: const Text( "Çıkış Toleransı", style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold), ), ), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( child: FikoButton1( text: "${gunObs.value.girisToleransi?.insanize ?? 'Yok'}", textStrokeWidth: 2, textSize: 16, onPressed: () async { gunObs.value.girisToleransi = await (gunObs.value.girisToleransi ?? Duration(microseconds: 0)).sureSec(context, ayarlar: FikoDialogAyarlari(baslik: "Giriş Toleransı Seçiniz", icerik: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FikoButton1( text: "⏳ 5 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.girisToleransi = Duration(minutes: 5); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.girisToleransi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 10 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.girisToleransi = const Duration(minutes: 10); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.girisToleransi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 15 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.girisToleransi = const Duration(minutes: 15); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.girisToleransi); }, ), ], ), ])); servisMesaici.ayarlarModel!.refresh(); }, ), ), Expanded( child: FikoButton1( text: "${gunObs.value.cikisToleransi?.insanize ?? 'Yok'}", textStrokeWidth: 2, textSize: 16, onPressed: () async { gunObs.value.cikisToleransi = await (gunObs.value.cikisToleransi ?? Duration(microseconds: 0)).sureSec(context, ayarlar: FikoDialogAyarlari(baslik: "Giriş Toleransı Seçiniz", icerik: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FikoButton1( text: "⏳ 5 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.cikisToleransi = Duration(minutes: 5); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.cikisToleransi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 10 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.cikisToleransi = const Duration(minutes: 10); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.cikisToleransi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 15 Dk", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.cikisToleransi = const Duration(minutes: 15); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.cikisToleransi); }, ), ], ), ])); servisMesaici.ayarlarModel!.refresh(); }, ), ), ], ), ListTile( dense: true, subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( 'Çalışma Süresi', style: TextStyle( fontWeight: FontWeight.bold, ), ), Obx( () => FikoButton1( text: "${gunObs.value.calismaSuresi?.insanizeEk() ?? 'Yok'}", textStrokeWidth: 2, textSize: 16, textColor: Colors.red, textStrokeColor: Colors.yellow, onPressed: () async { gunObs.value.calismaSuresi = await (gunObs.value.calismaSuresi ?? Duration(microseconds: 0)).sureSec(context, ayarlar: FikoDialogAyarlari(baslik: "Çalışma Süresini Seçiniz", icerik: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FikoButton1( text: "⏳ 11 Saat", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.calismaSuresi = Duration(hours: 11); // gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.calismaSuresi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 9 Saat", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.calismaSuresi = const Duration(hours: 9); // gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.calismaSuresi); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 7,5 Saat", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.calismaSuresi = const Duration(hours: 7, minutes: 30); // gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context, gunObs.value.calismaSuresi); }, ), ], ), ])); servisMesaici.ayarlarModel!.refresh(); }, ), ), ], ), // trailing: const Icon(Icons.chevron_right_sharp), isThreeLine: true, splashColor: Colors.grey.shade300, onTap: () {}, ), ListTile( dense: true, subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Expanded( child: Divider( indent: 20.0, endIndent: 10.0, thickness: 1, ), ), Text( 'Molalar (${gunObs.value.molalar?.toplamMola.insanize ?? 'Yok'})', style: const TextStyle( fontWeight: FontWeight.bold, ), ), const Expanded( child: Divider( indent: 10.0, endIndent: 20.0, thickness: 1, ), ), SizedBox( width: 33, child: MaterialButton( elevation: 0, minWidth: 0, shape: CircleBorder( // borderRadius: // const BorderRadius.all( // Radius.circular(5)), side: BorderSide(width: 1, color: Colors.blue.withOpacity(0.5), style: BorderStyle.solid), ), padding: const EdgeInsets.all(0), // color: Colors.white, onPressed: () async { Mola ml = Mola(); FikoYTService.dialogGoster( context, SizedBox( width: 250, // height: 300, child: MolaDialog( mola: ml, ), ), FikoDialogAyarlari(baslik: "Mola Ekle", baslikSimge: "➕", altButonlar: [ FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Ekle", onPressed: (() { List? _list = gunObs.value.molalar?.toList(); _list?..add(ml); gunObs.value.molalar = _list; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }), ), FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Kapat", onPressed: (() { Navigator.pop( context, ); }), ), ]), ); }, child: const Text("➕"), // const Icon(Icons.notifications, // color: Colors.lightBlue, size: 14), ), ), ], ), gunObs.value.molalar!.isEmpty ? Padding( padding: const EdgeInsets.only(top: 30.0), child: Stack( children: [ Card( child: Container( height: 100.0, ), ), FractionalTranslation( translation: const Offset(0.0, -0.4), child: Align( alignment: const FractionalOffset(0.5, 0.0), child: CircleAvatar( // backgroundColor: Colors.redAccent.shade200, radius: 25.0, child: Image.asset( 'assets/mesaici/ayarlar/cay.png', // width: 300, width: 42, height: 42, fit: BoxFit.contain, ), ), ), ), Padding( padding: const EdgeInsets.only(top: 48), child: Align( alignment: const FractionalOffset(0.5, 0.5), child: Text( "Henüz Mola Kaydı Girilmemiş", style: TextStyle(fontSize: 16, fontWeight: FontWeight.w300, color: Colors.blueAccent.shade400), ), ), ), ], ), ) : SizedBox( height: 55, 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: [ for (var k = 0; k < (gunObs.value.molalar ?? []).length; k++) Obx(() { // Mola mola = // gunObs.value.molalar[k]; Rx molaObs = gunObs.value.molalar![k].obs; molaObs.listen((val) { gunObs.value.molalar![k] = val; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); }); return Padding( padding: const EdgeInsets.symmetric( horizontal: 4, ), child: ChoiceChip( avatar: Image.asset( 'assets/mesaici/ayarlar/cay.png', // width: 300, width: 40, height: 40, fit: BoxFit.contain, ), padding: const EdgeInsets.all(3), label: Column( children: [ Align( alignment: Alignment.centerLeft, child: Obx( () => Text( (molaObs.value.ismi == "" && molaObs.value.ismi == null) ? "İsim Verilmemiş" : molaObs.value.ismi ?? "İsim Verilmemiş", style: const TextStyle( fontSize: 12, ), textAlign: TextAlign.start, ), ), ), Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ FikoButton1(text: molaObs.value.girisSaati?.formatla("HH:mm:ss") ?? "Yok", textSize: 10, textColor: Colors.green, textStrokeColor: Colors.transparent), FikoButton1( text: molaObs.value.cikisSaati?.formatla("HH:mm:ss") ?? "Yok", textSize: 10, textColor: Colors.red, textStrokeColor: Colors.transparent, ), ], ), Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ FikoButton1( text: molaObs.value.farkHesapla().insanize ?? 'Yok', textSize: 14, textColor: Colors.green, textStrokeColor: Colors.transparent, ), ], ), ], ), checkmarkColor: Colors.transparent, backgroundColor: Colors.transparent, showCheckmark: false, selected: false, onSelected: (bool selected) { FikoYTService.dialogGoster( context, SizedBox( width: 250, height: 300, child: MolaDialog( mola: molaObs.value, ), ), FikoDialogAyarlari(baslik: "Mola Düzenle", altButonlar: [ FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Sil", onPressed: () { List? _list = gunObs.value.molalar?.toList(); _list?.remove(molaObs.value); gunObs.value.molalar = _list; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }, ), const Spacer(), FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Kapat", onPressed: (() { // print(molaObs.value.toJson()); molaObs.refresh(); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); Navigator.pop( context, ); }), ), ]), ); }), ).animate(effects: [FadeEffect(), ShimmerEffect(delay: 1000.ms)]); }), ], ), ), ), // Slider( // value: 9.0, // // label: "", // min: 0, // max: 24, // onChanged: (double value) { // // servisMesaici.aylikCalismaSaati.value = // // value; // // servisMesaici.ayarlariKaydet(); // }, // ), ListTile( dense: true, subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Mesai Oranı (${gunObs.value.mesaiOrani}%)', style: const TextStyle( fontWeight: FontWeight.bold, ), ), Obx( () => FikoYaziKutusu( baslik: "Mesai Oranı", simgeSol: const Text( "💸", style: TextStyle(fontSize: 22), ), klavyeTipi: TextInputType.number, formatlayicilar: [ CurrencyInputFormatter( trailingSymbol: "%", ) // MaskedInputFormatter( // '00000-0000-M00-B00-N# ', // allowedCharMatcher: RegExp("^[0-9]*\$"), // ), ], degeri: gunObs.value.mesaiOrani.toCurrencyString(trailingSymbol: '%'), degisti: (value, {kontrolcu}) { gunObs.value.mesaiOrani = double.parse(value.replaceAll("%", "").replaceAll(",", "")); gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); }, // degeri: "0.00₺", ), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FikoButton1( text: "⏳ 50 %", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.mesaiOrani = 50; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 100 %", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.mesaiOrani = 100; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); }, ), const SizedBox( width: 5, ), FikoButton1( text: "⏳ 150 %", textSize: 10, edgePadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 1), textColor: Colors.black, textStrokeColor: Colors.transparent, borderColor: Colors.blue, onPressed: () { gunObs.value.mesaiOrani = 150; gunObs.refresh(); servisMesaici.ayarlarModel!.refresh(); }, ), ], ), ], ), // trailing: const Icon(Icons.chevron_right_sharp), isThreeLine: true, splashColor: Colors.grey.shade300, onTap: () {}, ), ], ), // trailing: const Icon(Icons.chevron_right_sharp), isThreeLine: true, splashColor: Colors.grey.shade300, onTap: () {}, ), ], ), ), ], ), contentPadding: EdgeInsets.zero, collapsedIcon: const Icon(Icons.arrow_drop_down), expandedIcon: const Icon(Icons.arrow_drop_up), titleBorderRadius: const BorderRadius.only( topLeft: Radius.circular(5), topRight: Radius.circular(5), ), expandedTitleBackgroundColor: Colors.grey.shade200, contentBorder: Border.all(color: Colors.grey.shade200), contentBorderRadius: const BorderRadius.only( bottomLeft: Radius.circular(5), bottomRight: Radius.circular(5), ), titlePadding: const EdgeInsets.symmetric( horizontal: 10, vertical: 5, ), showAccordion: false, ); }, ), ], ), ); } }