import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:flutter/scheduler.dart' as sc; import 'package:your_project/models/model_hareketler.dart'; import 'package:your_project/services/fiko_yt_service.dart'; import 'package:your_project/utils/extensions.dart'; // formatla, formattan gibi fonksiyonlar burada olmalı class HomeLogic extends GetxController { Rx gun = DateTime.now().obs; RxList hareketler = [].obs; RxList altKartlar = [].obs; DateTime? get seciliGunTarih { return DateTime(2024).formattan("dd.MM.yyyy EEEE", gun.value); } Future alHareketler() async { final tarih = seciliGunTarih; if (tarih == null) return; final results = await FikoYTService.db.select('hareketler') .eq('tarih', tarih) .order('id', ascending: false) .execute(); final data = (results.data as List?)?.map((e) => ModelHareketler.fromJson(e)).toList() ?? []; hareketler.assignAll(data); } Future alAltHareketler() async { final tarih = seciliGunTarih; if (tarih == null) return; final results = await FikoYTService.db.select('alt_hareketler') .eq('tarih', tarih) .order('id', ascending: false) .execute(); final data = (results.data as List?)?.map((e) => ModelHareketler.fromJson(e)).toList() ?? []; altKartlar.assignAll(data); } } class HomePage extends StatefulWidget { const HomePage({Key? key}) : super(key: key); @override State createState() => _HomePageState(); } class _HomePageState extends State { final HomeLogic logic = Get.put(HomeLogic()); final basePageLogic = Get.find(); @override void initState() { super.initState(); sc.SchedulerBinding.instance.addPostFrameCallback((_) async { basePageLogic.subTitle.value = "šŸ  Merkez"; logic.gun.value = DateTime.now(); FikoYTService.servisMesaici.aktifAy.value = DateTime.now(); await Future.wait([ logic.alHareketler(), logic.alAltHareketler(), ]); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Obx(() => Text(basePageLogic.subTitle.value))), body: RefreshIndicator( onRefresh: () async { await Future.wait([ logic.alHareketler(), logic.alAltHareketler(), ]); }, child: SingleChildScrollView( physics: const AlwaysScrollableScrollPhysics(), child: Column( children: [ Obx(() => Text( logic.gun.value.formatla('dd.MM.yyyy EEEE'), style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold), )), const SizedBox(height: 16), Obx(() => logic.hareketler.isEmpty ? const Text("Hareket bulunamadı.") : ListView.separated( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemCount: logic.hareketler.length, separatorBuilder: (_, __) => const Divider(), itemBuilder: (context, index) { final hareket = logic.hareketler[index]; return ListTile( title: Text(hareket.aciklama ?? ''), subtitle: Text(hareket.tarih?.toString() ?? ''), ); }, )), const SizedBox(height: 24), Obx(() => logic.altKartlar.isEmpty ? const Text("Alt hareket bulunamadı.") : ListView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemCount: logic.altKartlar.length, itemBuilder: (context, index) { final altHareket = logic.altKartlar[index]; return Card( child: ListTile( title: Text(altHareket.aciklama ?? ''), subtitle: Text(altHareket.tarih?.toString() ?? ''), ), ); }, )), ], ), ), ), ); } }