import 'package:fikoyt_akcali_v1/apps/finans/core/models/finans.model.dart'; import 'package:fikoyt_akcali_v1/apps/finans/core/services/finans.servis.dart'; import 'package:fikoyt_akcali_v1/apps/finans/uye/hesaplar/_hesaplar-logic.dart'; import 'package:fikoyt_akcali_v1/apps/finans/uye/para-birimleri/para-birimi-sec-dialog.dart'; import 'package:fikoyt_akcali_v1/core/widgets/header_widget/header_widget.dart'; import 'package:fikoyt_akcali_v1/core/widgets/renk_secici/renk_secici.dart'; import 'package:fikoyt_akcali_v1/core/widgets/uygulama_baslik/uygulama_baslik.dart'; import 'package:fikoyt_ui/fikoyt_ui.dart'; import 'package:fikoyt_ui/ui/fikoyt_card.dart'; import 'package:fikoyt_ui/ui/yazi_kutulari/fikoyt_button_kutu.dart'; import 'package:fikoyt_ui/ui/yazi_kutulari/yazi_kutulari.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; class SayfaHesapEkle extends StatefulWidget { SayfaHesapEkle({super.key, Rx? kyt, this.animClose}) : yeni = kyt == null ? true : false, kyt = kyt ?? Hesap().obs; Rx kyt = Hesap().obs; bool? yeni; void Function({Never returnValue})? animClose; @override State createState() => _SayfaHesapEkleState(); } class _SayfaHesapEkleState extends State { FinansServis? finansServis = FikoYTCoreService.servisler.getServis(); HesaplarService? logicHesaplar; Rx hesaplama = Rx(""); bool isOpenFab = false; int _index = 0; @override void initState() { super.initState(); // finansServis = FikoYTCoreService.servisler.getServis(); logicHesaplar = Get.put(HesaplarService()); SchedulerBinding.instance.addPostFrameCallback((_) { // logic.gun.value = widget.gun; // widget.kyt.value = logicHesaplar?.hesapByIdSync(int.tryParse(widget.hesapId ?? "-1") ?? -1); // await logic.alHareketler(); // await logic.alAltHareketler(); // logic.gun.refresh(); // finansServis?.altBaslik.value = widget.yeni == true ? "Yeni Hesap" : "Hesap Düzenle"; finansServis?.solMenuAl(context); }); } @override void dispose() { // Get.delete(); super.dispose(); } @override Widget build(BuildContext context) { return FikoYTSliverApp( leading: UygulamaBaslikSol( simge: Icon(Icons.keyboard_double_arrow_left, color: Colors.orangeAccent, size: 36), onPressedSimge: () { if (widget.animClose != null) widget.animClose!(); }, ), title: UygulamaBaslikOrta(altBaslik: widget.yeni == true ? "Yeni Hesap" : widget.kyt.value.ismi), actions: [UygulamaBaslikSag()], drawer: finansServis?.solMenu.value, backgroundColor: Theme.of(context).extension()?.backgroundColor, appBarColor: Theme.of(context).extension()?.appBarColor?.withAlpha(230), headerExpandedHeight: 250, // stretchMaxHeight: 100, fullyStretchable: true, centerTitle: true, alwaysShowLeadingAndAction: true, alwaysShowTitle: true, curvedBodyRadius: 0, // onStretchTrigger: () async { // context.vRouter.to("/"); // }, /// floatingActionButton: Container( decoration: BoxDecoration( color: isOpenFab ? Theme.of(context).extension()?.cardBackgroundColor : Colors.white, borderRadius: BorderRadius.circular(50), boxShadow: Theme.of(context).extension()?.boxShadow, ), child: FloatingActionButton( backgroundColor: Theme.of(context).extension()?.successTextColor, elevation: 5, shape: CircleBorder(), splashColor: Colors.black.withAlpha(100), child: FikoYTButton( text: widget.yeni == true ? "💾" : "💫", tema: FikoYTButtonTheme( fontSize: 24, // radius: 80, // edgePadding: EdgeInsets.all(15), // backgroundColor: Theme.of(context).extension()?.successTextColor, ), ), onPressed: () async { // kaydet(); // widget.kyt.value.rengi = Colors.blue; if (widget.kyt.value.bosMu) { toastification.show( context: FikoYTCoreService.navigatorKey.currentContext, type: ToastificationType.error, style: ToastificationStyle.fillColored, // title: Text("FikoYT Sistem"), description: Text("Tüm Boş Alanları Doldurun."), alignment: Alignment.topRight, autoCloseDuration: const Duration(seconds: 4), borderRadius: BorderRadius.circular(4.0), // boxShadow: lowModeShadow, showProgressBar: false, dragToClose: true, applyBlurEffect: true, ); return; } await logicHesaplar?.kaydet(hsp: widget.kyt.value); toastification.show( context: FikoYTCoreService.navigatorKey.currentContext, type: ToastificationType.success, style: ToastificationStyle.fillColored, // title: Text("FikoYT Sistem"), description: Text(widget.yeni == true ? "Hesabınız Oluşturuldu." : "Hesabınız Güncellendi."), alignment: Alignment.topRight, autoCloseDuration: const Duration(seconds: 4), borderRadius: BorderRadius.circular(4.0), // boxShadow: lowModeShadow, showProgressBar: false, dragToClose: true, applyBlurEffect: true, ); logicHesaplar?.guncelle.refresh(); if (widget.animClose != null && !(widget.kyt.value.bosMu)) widget.animClose!(); }, ), ).animate(effects: [SlideEffect(begin: Offset(20, 0), delay: 50.ms, duration: 1000.ms)]), headerWidget: Obx(() { widget.kyt.value; return HeaderWidget( ovalResimUrl: widget.yeni == true ? "💳" : widget.kyt.value.simgesi, baslik: widget.yeni == true ? "Yeni Hesap" : widget.kyt.value.ismi, baslikTheme: Theme.of(context).extension()?.copyWith( textColor: Theme.of(context).extension()?.secondaryTextColor, fontWeight: FontWeight.bold, fontSize: 16, ), altBaslik: widget.yeni == true ? "Sisteminize Yeni Hesap Ekleyin" : "${widget.kyt.value.ismi != null ? '${widget.kyt.value.ismi} İsimli' : 'İsim Verilmemiş'} Hesabınızı Düzenleyin", altBaslikTheme: Theme.of(context).extension()?.copyWith( textColor: Theme.of(context).extension()?.tertiaryTextColor, fontWeight: FontWeight.normal, fontSize: 12, ), // ustKisim: Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // Spacer(), // FikoYTButton( // text: "${widget.kyt.value.hesapTipi.emoji ?? ''}${widget.kyt.value.hesapTipi.isim ?? ''}", // tema: Theme.of(context).extension()?.copyWith( // textColor: Theme.of(context).extension()?.secondaryTextColor, // fontWeight: FontWeight.normal, // textShadow: [], // fontSize: 12, // ), // ).animate(effects: [MoveEffect(begin: Offset(150, 0), duration: Duration(milliseconds: 750))]), // ], // ), // ovalResimTiklandi: finansServis?.profilResmiDegistir, ovalResimCiftTiklandi: finansServis?.profilResmiSil, ); }), // headerBottomBar: Container( // color: Theme.of(context).extension()?.cardBackgroundColor?.withAlpha(200), // child: Row( // children: [ // Obx( // () => FikoYTButton( // text: // "${widget.kyt.value.paraBirimi.value?.sembol ?? ""} ${widget.kyt.value.paraBirimi.value?.ismi ?? ""} ${widget.kyt.value.paraBirimi.value?.kod ?? ""}", // tema: Theme.of(context).extension()?.copyWith( // textColor: Theme.of(context).extension()?.tertiaryTextColor, // ), // onPressed: () {}, // ), // ), // Spacer(), // ], // ), // ), /// golgeGoster: false, bodyColor: Colors.transparent, bodyMaxWidth: 400, body: [ Stepper( currentStep: _index, physics: ClampingScrollPhysics(), margin: EdgeInsets.zero, stepIconMargin: EdgeInsets.zero, onStepCancel: () { if (_index > 0) { setState(() { _index -= 1; }); } }, onStepContinue: () { if (_index <= 0) { setState(() { _index += 1; }); } }, onStepTapped: (int index) { setState(() { _index = index; }); }, controlsBuilder: (context, controller) { // if (controller.stepIndex >= 3) { // return const SizedBox.shrink(); // } List liste = []; liste.addAll([ Spacer(), FikoYTButton( text: "Sonraki", tema: FikoYTButtonTheme(edgePadding: EdgeInsets.symmetric(horizontal: 10, vertical: 5)), onPressed: () { setState(() { _index++; }); }, ), ]); if (controller.stepIndex > 0 && controller.stepIndex < 3) { liste.insert( 0, FikoYTButton( text: "Önceki", tema: FikoYTButtonTheme(edgePadding: EdgeInsets.symmetric(horizontal: 10, vertical: 5)), onPressed: () { setState(() { _index--; }); }, ), ); } if (controller.stepIndex >= 3) { return const SizedBox.shrink(); } return Row(children: liste); }, steps: [ Step( title: FikoYTButton( text: '🖊️ Temel Bilgiler', tema: Theme.of(context).extension()?.copyWith( textStrokeColor: Colors.transparent, textColor: Theme.of(context).extension()?.textColor?.withAlpha(150), textShadow: [], ), ), // subtitle: FikoYTButton( // text: 'Temel Bilgileri Giriniz', // tema: Theme.of(context).extension()?.copyWith( // textStrokeColor: Colors.transparent, // textColor: Theme.of(context).extension()?.textColor?.withAlpha(150), // textShadow: [], // fontWeight: FontWeight.normal, // ), // ), content: Padding( padding: const EdgeInsets.all(0.0), child: Column( spacing: 5, mainAxisSize: MainAxisSize.max, children: [ FikoYaziKutusu( baslik: "Hesap İsmi", simgeSol: const Text("✏️", style: TextStyle(fontSize: 14)), yaziBoyutu: 12.0, radius: 5.0, degeri: widget.kyt.value.ismi, degisti: (value) { widget.kyt.value.ismi = value; }, ), FikoYaziKutusu( baslik: "Hesap Emoji", simgeSol: const Text("⭐", style: TextStyle(fontSize: 14)), yaziBoyutu: 12.0, radius: 5.0, degeri: widget.kyt.value.simgesi, degisti: (value) { widget.kyt.value.simgesi = value; }, ), Obx( () => FikoYTButtonKutu( baslik: "Para Birimi", simgeSol: "⛃", sonEk: Text(widget.kyt.value.paraBirimi.value?.sembol ?? ""), // yaziBoyutu: 12.0, radius: 5.0, deger: widget.kyt.value.paraBirimi.value?.ismi, onPressed: () { // FikoYTCoreService.dialogGoster( // context, // finansServis?.paraBirimleriService.formParaBirimiListesi(context), // null, // ).then((value) { // if (value.runtimeType == ParaBirimi) widget.kyt.value.paraBirimi.value = value as ParaBirimi?; // widget.kyt.refresh(); // }); showGeneralDialog( context: context, barrierDismissible: true, barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel, transitionDuration: Duration( milliseconds: ((finansServis?.openContainerDuration.inMilliseconds ?? 0)).toInt(), ), pageBuilder: (context, animation, secondaryAnimation) { return Center( child: Material( color: Colors.transparent, child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, // Küçük diyalog olacak children: [ParaBirimiSecDialog()], ), // İçeriği buraya koyuyoruz ), ), ); }, transitionBuilder: (context, animation, secondaryAnimation, child) { return ScaleTransition( scale: Tween( begin: 0.7, end: 1.0, ).animate(CurvedAnimation(parent: animation, curve: Curves.easeOutBack)), child: FadeTransition(opacity: animation, child: child), ); }, ).then((value) { if (value.runtimeType == ParaBirimi) widget.kyt.value.paraBirimi.value = value as ParaBirimi?; widget.kyt.refresh(); }); }, ), ), /// Obx( () => FikoYTButtonKutu( baslik: "Hesap Rengi", simgeSol: "🎨", // sonEk: Text(widget.kyt.value.paraBirimi.value?.sembol ?? ""), // yaziBoyutu: 12.0, radius: 5.0, deger: Container(color: widget.kyt.value.rengi), onPressed: () async { RenkSecici renkSecici = RenkSecici(); Color? selectedColor = await renkSecici.showColorPicker(context); widget.kyt.value.rengi = selectedColor ?? widget.kyt.value.rengi; widget.kyt.refresh(); }, ), ), FikoAciklamaKutusu( baslik: "Açıklama", olculendirme: BoxConstraints(maxWidth: 350), yaziBoyutu: 12.0, radius: 5.0, degeri: widget.kyt.value.aciklama, degisti: (value) { widget.kyt.value.aciklama = value; }, ), /// SizedBox(height: 5), /// ], ), ), ), /// Step( title: FikoYTButton( text: '📌 Temel Özellikler', tema: Theme.of(context).extension()?.copyWith( textStrokeColor: Colors.transparent, textColor: Theme.of(context).extension()?.textColor?.withAlpha(150), textShadow: [], ), ), content: Obx( () => Column( children: [ /// desteklerItem( context, baslik: "Gelir Desteği", emoji: "⤵", aciklama: "Bu Özellik Sayesinde, Hesabınıza Direkt Olarak Gelir Belirleyebileceğiniz Bir Özellik Atanır.Eğer Aktif Değil İse Direkt Gelir Hareketi Gösteremezsiniz.Varsayılan Olarak Aktiftir", veriSeti: widget.kyt.value.gelirDestegi, veriSetiDegisti: (deger) { widget.kyt.value.gelirDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Gider Desteği", emoji: "⤴", aciklama: "Bu Özellik Sayesinde, Hesabınıza Direkt Olarak Gider Tanımlayabileceğiniz Bir Özellik Atanır.Eğer Aktif Değil İse Direkt Olarak Gider Hareketi Gösteremezsiniz.Varsayılan Olarak Aktiftir", veriSeti: widget.kyt.value.giderDestegi, veriSetiDegisti: (deger) { widget.kyt.value.giderDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Transfer Desteği", emoji: "🔀", aciklama: "Bu Özellik Sayesinde, Hesaplarınız Arası Transferler Yapabilirsiniz.Transferlerle Alakalı Bir Çok Şey Hesabınıza Eklenecektir. Varsayılan Olarak Aktiftir", veriSeti: widget.kyt.value.transferDestegi, veriSetiDegisti: (deger) { widget.kyt.value.transferDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Çoklu Para Birimi", emoji: "🧧", aciklama: "Bu Özellik Sayesinde, Hesaplarınızda Birden Fazla Para Birimi Kullanabilirsiniz", veriSeti: widget.kyt.value.cokluParaBirimiDestegi, veriSetiDegisti: (deger) { widget.kyt.value.cokluParaBirimiDestegi = deger; widget.kyt.refresh(); }, ), ], ), ), ), /// Step( title: FikoYTButton( text: '🧩 Gelişmiş Özellikleri', tema: Theme.of(context).extension()?.copyWith( textStrokeColor: Colors.transparent, textColor: Theme.of(context).extension()?.textColor?.withAlpha(150), textShadow: [], ), ), content: Obx( () => Column( children: [ /// desteklerItem( context, baslik: "Banka Desteği", emoji: "💴", aciklama: "Bu Türde Hesap Oluştururken Eğer Banka Desteği Aktif İse Hesabınız; Banka Hesaplarına Uygun Özelliklerle Donatılacaktır.", veriSeti: widget.kyt.value.bankaDestegi, veriSetiDegisti: (deger) { widget.kyt.value.bankaDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Faiz Desteği", emoji: "💯", aciklama: "Bu Seçenek Aktif İse Hesabınız, Faiz Sistemine Uygun Özelliklerle Donatılacaktır.", veriSeti: widget.kyt.value.faizDestegi, veriSetiDegisti: (deger) { widget.kyt.value.faizDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Kredi Desteği", emoji: "💸", aciklama: "Bu Seçenek Aktif İse Hesabınız, Çektiğiniz Kredilere Uygun Hesap Özellikleriyle Donatılacaktır.", veriSeti: widget.kyt.value.krediDestegi, veriSetiDegisti: (deger) { widget.kyt.value.krediDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Yatırım Desteği", emoji: "☘", aciklama: "Bu Seçenek Aktif İse Hesabınız, Yatırımlarınız İle İlgili Lazım Olabilecek Bir Çok Özelliklerle Donatılacaktır.", veriSeti: widget.kyt.value.yatirimDestegi, veriSetiDegisti: (deger) { widget.kyt.value.yatirimDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Hedef Desteği", emoji: "🎯", aciklama: "Bu Seçenekte İse Hesabınızda, Hedefler Belirleyip Takip Edebilir, Hedef Takibi İle İlgili Bir Çok Özelliği Aktif Edebilirsiniz.", veriSeti: widget.kyt.value.hedefDestegi, veriSetiDegisti: (deger) { widget.kyt.value.hedefDestegi = deger; widget.kyt.refresh(); }, ), /// desteklerItem( context, baslik: "Borç Desteği", emoji: "👤", aciklama: "Bu Mükemmel Özellik Aktif İse, Verdiğiniz Borçlarla Alakalı Takiplerinizi Yapabilir, Borç Takibi İle Alakalı Bir Çok Özelliği ve Uygulamayı Aktif Edebilirsiniz.", veriSeti: widget.kyt.value.borcDestegi, veriSetiDegisti: (deger) { widget.kyt.value.borcDestegi = deger; widget.kyt.refresh(); }, ), ], ), ), ), /// Step( title: FikoYTButton( text: '✔ Son Onay', tema: Theme.of(context).extension()?.copyWith( textStrokeColor: Colors.transparent, textColor: Theme.of(context).extension()?.textColor?.withAlpha(150), textShadow: [], ), ), content: Column( children: [ FikoYTButton( text: "Bilgilerin Doğruluğundan Eminseniz ve Son Kontrolleri Yaptıysanız Kaydet Tuşuna Basarak Hesabınızı Açabilirsiniz", tema: FikoYTButtonTheme( textAlign: TextAlign.center, textColor: Theme.of(context).extension()?.infoTextColor, ), ), ], ), ), ], ), SizedBox(height: 300), ], sliverAltKisimGoster: false, sliverAltKisim: SizedBox.shrink(), ); } Widget desteklerItem( BuildContext context, { required String baslik, required String emoji, required String aciklama, required bool? veriSeti, required Function(bool deger) veriSetiDegisti, }) { // var baslik = "Hedef Desteği"; // var emoji = '🎯'; // var aciklama = // "Bu Seçenekte İse Hesabınızda, Hedefler Belirleyip Takip Edebilir, Hedef Takibi İle İlgili Bir Çok Özelliği Aktif Edebilirsiniz."; return Container( padding: EdgeInsets.all(0), child: Column( children: [ ListTileTheme( contentPadding: EdgeInsets.all(5), dense: true, horizontalTitleGap: 0, minVerticalPadding: 0, child: ListTile( leading: Text(emoji, style: TextStyle(fontSize: 24)), title: FikoYTButton( text: baslik, tema: FikoYTButtonTheme( textColor: Theme.of(context).extension()?.infoTextColor, fontSize: 14, textShadow: [], ), ), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ FikoYTButton( text: aciklama, tema: FikoYTButtonTheme(fontWeight: FontWeight.normal, fontSize: 10, textShadow: []), ), Align( alignment: Alignment.centerRight, child: SizedBox( height: 25, child: FittedBox( fit: BoxFit.fill, child: Obx(() { widget.kyt.value; return Switch( value: veriSeti ?? false, onChanged: (value) { // veriSeti = value; // widget.kyt.refresh(); veriSetiDegisti(value); }, ); }), ), ), ), ], ), dense: true, isThreeLine: true, onTap: () { veriSetiDegisti(!(veriSeti ?? false)); }, ), ), Divider(height: 1, thickness: 1), ], ), ); } }