import 'package:fikoyt_finans/apps/mesaici/base_page_mesaici_view.dart'; import 'package:fikoyt_finans/apps/mesaici/model/ayarlar/model_ayarlar.dart'; import 'package:fikoyt_finans/core/Extensions/fiko_duration_ext.dart'; import 'package:fikoyt_finans/core/Extensions/fiko_tarih.dart'; import 'package:fikoyt_finans/core/fikoyt.service.dart'; import 'package:fikoyt_finans/core/interface/fiko_dialog_ayarlari.dart'; import 'package:fikoyt_finans/core/widgets/fiko_ui/fiko_button/fiko_button.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:get/get.dart'; import 'mola_dialog.dart'; class MolalarListView extends StatefulWidget { MolalarListView({ super.key, required this.gunObs, this.ayarGizle = false, this.scrollController, }); Rx gunObs; bool ayarGizle = false; ScrollController? scrollController; @override State createState() => _MolalarListViewState(); } class _MolalarListViewState extends State { BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); // final FikoYTMesaiciService FikoYTService.servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); // late Rx molaObs = mola.obs; @override void initState() { // widget.scrollController ??= ScrollController(); super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { await Future.delayed(const Duration(milliseconds: 1000)); if (mounted) { if (widget.scrollController?.hasClients != null) { widget.scrollController?.animateTo( widget.scrollController!.position.maxScrollExtent, duration: const Duration(milliseconds: 1000), curve: Curves.easeOut, ); } } }); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return 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: SingleChildScrollView( controller: widget.scrollController, scrollDirection: Axis.horizontal, physics: const BouncingScrollPhysics(), child: Row( children: [ const SizedBox( width: 30, ), for (var k = 0; k < (widget.gunObs.value.molalar ?? []).length; k++) Obx(() { Rx molaObs = widget.gunObs.value.molalar![k].obs; molaObs.listen((val) { widget.gunObs.value.molalar![k] = val; widget.gunObs.refresh(); FikoYTService.servisMesaici.ayarlarModel!.refresh(); }); return Padding( padding: const EdgeInsets.symmetric(horizontal: 4), child: ChoiceChip( avatar: Image.asset( 'assets/mesaici/ayarlar/cay.png', 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, child: MolaDialog(mola: molaObs), ), FikoDialogAyarlari(baslik: "Mola Düzenle", altButonlar: [ FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Sil", onPressed: () { List? list0 = widget.gunObs.value.molalar?.toList(); list0?.remove(molaObs.value); widget.gunObs.value.molalar = list0; widget.gunObs.refresh(); FikoYTService.servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context); }, ), const Spacer(), FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Kapat", onPressed: (() { molaObs.refresh(); widget.gunObs.refresh(); FikoYTService.servisMesaici.ayarlarModel!.refresh(); Navigator.pop(context); }), ), ]), ); }, ), ).animate(effects: [const FadeEffect(), ShimmerEffect(delay: 1000.ms)]); }), const SizedBox( width: 30, ), ], ), ), ), ); } }