import 'dart:async'; 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/core/fikoyt.service.dart'; import 'package:fikoyt_mesaici/core/widgets/yazi_kutulari/yazi_kutulari.dart'; import 'package:fikoyt_ui/ui/ui.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:get/get.dart'; class EkOdemeEkle extends StatefulWidget { EkOdemeEkle({super.key, this.ekOdeme}); EkOdeme? ekOdeme; @override State createState() => _EkOdemeEkleState(); } class _EkOdemeEkleState extends State { BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); // final FikoYTMesaiciService FikoYTService.servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); late Rx ekOdemeObs = (widget.ekOdeme ?? EkOdeme()).obs; //---> final GlobalKey globalKeysAktifSecim = GlobalKey(); final scrollController = ScrollController(); //---> late StreamSubscription listenEkOdeme; @override void initState() { listenEkOdeme = ekOdemeObs.listen((val) { widget.ekOdeme = val; // FikoYTService.servisMesaici.ayarlarModel!.refresh(); }); super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) async { await Future.delayed(const Duration(milliseconds: 1000)); RenderObject? aktifSecimObject = globalKeysAktifSecim.currentContext?.findRenderObject(); // print(globalKeysAktifAy); if (aktifSecimObject != null) { scrollController.position.ensureVisible( aktifSecimObject, alignment: 0.5, // How far into view the item should be scrolled (between 0 and 1). duration: const Duration(seconds: 1), ); } }); } @override void dispose() { listenEkOdeme.cancel(); scrollController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( "Ödemeye Bir İsim Veriniz", ), Obx( () => FikoYaziKutusu( baslik: "Ödeme İsmi", simgeSol: const Text( "👩🏻‍🤝‍👨🏽", style: TextStyle( fontSize: 16, ), ), radius: 5.0, degeri: ekOdemeObs.value.ismi, degisti: (value) { ekOdemeObs.value.ismi = value; }, ), ), FikoAciklamaKutusu( baslik: "Ek Ödeme Açıklama", radius: 5.0, degeri: ekOdemeObs.value.aciklama, yaziBoyutu: 12.0, degisti: (value) { ekOdemeObs.value.aciklama = value; }, ), /** */ Obx( () => Text.rich(TextSpan(text: "Aktif Ödeme Türü", children: [ TextSpan(text: " (${ekOdemeObs.value.turu.simge} ${ekOdemeObs.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( controller: scrollController, shrinkWrap: true, physics: const BouncingScrollPhysics(), scrollDirection: Axis.horizontal, // your ListView children: [ const SizedBox( width: 20, ), for (var i = 0; i < EkOdemeTuruTumu.length; i++) Obx( () { EkOdemeTuru vrd = EkOdemeTuruTumu[i]; return Padding( key: widget.ekOdeme?.turu.ismi == vrd.ismi ? globalKeysAktifSecim : null, padding: const EdgeInsets.symmetric( horizontal: 1, ), child: FikoButton( text: "${vrd.simge} ${vrd.ismi}", tema: FikoButtonTema( sinirRengi: Colors.grey.shade400, arkaRenk: ekOdemeObs.value.turu == EkOdemeTuruTumu[i] ? Colors.blue.withOpacity(0.7) : Colors.black.withOpacity(0), edgePadding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), yaziRengi: Colors.amberAccent, yaziSinirRengi: Colors.blue, ), onLongPress: () {}, onPressed: () { widget.ekOdeme?.turu = EkOdemeTuruTumu[i]; ekOdemeObs.value.turu = EkOdemeTuruTumu[i]; ekOdemeObs.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( "Ücret Miktarını Giriniz", ), FikoYaziKutusu( baslik: "Ücret 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: "${ekOdemeObs.value.miktar}", degisti: (value) { if (value.isNum) { ekOdemeObs.value.miktar = double.parse(value.replaceAll("₺", "").replaceAll(",", "")); // FikoYTService.servisMesaici.ayarlarModel!.refresh(); } else {} // maasObs.refresh(); }, // degeri: "0.00₺", ), Obx( () => Row( children: [ const Text("➕ Brüte Ekle"), const Spacer(), SizedBox( height: 25, child: FittedBox( fit: BoxFit.fill, child: Switch( value: ekOdemeObs.value.bruteEkle ?? true, onChanged: (value) { ekOdemeObs.value.bruteEkle = value; ekOdemeObs.refresh(); }, ), ), ), ], ), ), ], ); } }