Flutter İle App - Yardım
-
Merhaba beyler. Chatgpt yardımıyla bir app yapmak istedim. Bazı hataları arayarak çözdüm fakat bir türlü veritabanına eklediğim kayıtları çekemedim. Veritabanına kayıt yapıp yapmadığı konusunda da emin değilim :) Çünkü flutter bilmiyorum.
Koddan beklentim isim, tarih ve fiyat gireyim. veritabanına kayıt etsin. yan tabda da aya göre girilen verileri sıralasın. Her ayın altında da fiyatları toplayarak yazsın.
Tab ve aya göre sıralamayı chatgpt yaptı. Fakat aya göre sıralamayı verileri çekemediği için yapamadı. Aşağıdaki kodda aynı sayfada alt alta sıralaması gerekiyor ama bir türlü olmuyor. Özetle yardıma ihtiyacım var. Bana yardım edebilecek bir babayiğit arıyorum, vakti olan yazarsa sevinirim.
edit: birde fiyatı örn: 100.350 gibi girmek istiyorum onuda yapamıyor. 25.450,90 gibi ondalıklıda girebilmek lazım ama yapamadım bir türlü.
görsel: https://ibb.co/LSd5141
import 'package:flutter/material.dart'; import 'package:sqflite/sqflite.dart'; import 'dart:io'; import 'package:intl/intl.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: SalesApp(), ); } } class SalesApp extends StatefulWidget { @override _SalesAppState createState() => _SalesAppState(); } class _SalesAppState extends State<SalesApp> { TextEditingController _nameController = TextEditingController(); TextEditingController _priceController = TextEditingController(); TextEditingController _dateController = TextEditingController(); Database? _database; List<Map<String, dynamic>> _salesData = []; // Kayıtları saklamak için @override void initState() { super.initState(); _initializeDatabase(); } Future<void> _initializeDatabase() async { final databasePath = await getDatabasesPath(); final path = "${databasePath}${Platform.pathSeparator}sales.db"; _database = await openDatabase( path, version: 1, onCreate: (db, version) async { await db.execute( 'CREATE TABLE IF NOT EXISTS sales(id INTEGER PRIMARY KEY, name TEXT, price REAL, date TEXT)', ); }, ); _fetchSalesData(); // Veritabanı ilk açıldığında verileri çek } Future<void> _saveData() async { final String name = _nameController.text.trim(); final double? price = double.tryParse(_priceController.text); final String date = _dateController.text.trim(); final dateRegex = RegExp(r'^\d{4}-\d{2}-\d{2}$'); if (name.isNotEmpty && price != null && date.isNotEmpty && dateRegex.hasMatch(date)) { await _database?.insert( 'sales', {'name': name, 'price': price, 'date': date}, conflictAlgorithm: ConflictAlgorithm.replace, ); // Veritabanına eklenen verileri kontrol et print("Kayıt eklendi: İsim: $name, Fiyat: $price, Tarih: $date"); _nameController.clear(); _priceController.clear(); _dateController.clear(); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text("Kayıt başarılı!")), ); _fetchSalesData(); // Kayıt eklendikten sonra verileri güncelle } else { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text("Lütfen tüm alanları doğru formatta doldurunuz")), ); } } Future<void> _deleteAllData() async { await _database?.delete('sales'); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text("Veritabanı temizlendi!")), ); _fetchSalesData(); // Veritabanı temizlendikten sonra verileri güncelle } Future<void> _fetchSalesData() async { final List<Map<String, dynamic>> sales = await _database!.query( 'sales', orderBy: 'date DESC', // Tarihe göre azalan sıralama ); // Okunan verileri kontrol et print("Okunan veriler: $sales"); setState(() { _salesData = sales; // Durumu güncelle }); } Future<void> _selectDate(BuildContext context) async { final DateTime? pickedDate = await showDatePicker( context: context, initialDate: DateTime.now(), firstDate: DateTime(2000), lastDate: DateTime.now(), ); if (pickedDate != null) { setState(() { _dateController.text = DateFormat('yyyy-MM-dd').format(pickedDate); }); } } @override void dispose() { _nameController.dispose(); _priceController.dispose(); _dateController.dispose(); _database?.close(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Satış Uygulaması"), ), body: Padding( padding: EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("İsim"), TextField(controller: _nameController), SizedBox(height: 16), Text("Tarih"), TextField( controller: _dateController, readOnly: true, // Kullanıcı yazamasın decoration: InputDecoration( hintText: "Tarih Seçin", suffixIcon: IconButton( icon: Icon(Icons.calendar_today), onPressed: () => _selectDate( context), // Takvim ikonuna tıklandığında tarih seç ), ), ), SizedBox(height: 16), Text("Satış Miktarı"), TextField( controller: _priceController, keyboardType: TextInputType.number, decoration: InputDecoration(hintText: "Örnek: 100.50"), ), SizedBox(height: 32), Center( child: ElevatedButton( onPressed: _saveData, child: Text("Kaydet"), ), ), SizedBox(height: 16), Center( child: ElevatedButton( onPressed: _deleteAllData, child: Text("Veritabanını Temizle"), style: ElevatedButton.styleFrom(primary: Colors.red), ), ), SizedBox(height: 32), Text("Kayıtlar:"), _salesData.isEmpty ? Center(child: Text("Kayıt bulunamadı.")) : Expanded( child: ListView.builder( itemCount: _salesData.length, itemBuilder: (context, index) { final sale = _salesData[index]; return ListTile( title: Text("İsim: ${sale['name']}"), subtitle: Text( "Fiyat: ${sale['price']} - Tarih: ${sale['date']}"), ); }, ), ), ], ), ), ); } }
-
Hocam amacın kullanacağın bir ürün yapmak ise https://www.flutterflow.io/ gibi araçları kullansan daha iyi olur bence. Bu tarz no-code/low code araçlar veri kaydetme ve veri gösterme işlerini iyi yaparlar diye tahmin ediyorum.
Chatgpt ye kod ürettirdiğin zaman kodu okuma, kodu düzeltme, debugging vs. işler için yine bilgi ve zaman gerekecek. (No code olarak isimlendirilen araçların da bir öğrenme süresi var elbette.)
Flutter bilmediğim için sorun hakkında yorum yapamıyorum maalesef.
-
@Hannibal_King sağol hocam bakacağım eve geçince.
Arkadaşlar Hannibal hocanın paylaştığı gibi nocode platform tavsiyesi verebilir misiniz?
-
Flutterflow isini cozer
-
tarzan bunu yazdı
@Hannibal_King sağol hocam bakacağım eve geçince.
Arkadaşlar Hannibal hocanın paylaştığı gibi nocode platform tavsiyesi verebilir misiniz?
Gibi başka uygulamalar da var.
Kullanan kişiler flutterflow'un epey iyi olduğunu söylüyorlar. Ben sadece incelemek amacıyla flutterflow'a 1-2 saat bakmıştım. 2-3 haftanı ayırırsan flutterflow'u çözersin muhtemelen.
Bazı nocode builderlar sadece websitesini uygulamaya çevirme işini yapıyor. Onların pek iş göreceğini sanmıyorum.
Bence başka tavsiye arama. Flutterflow ile devam et. Reddit'e ve diğer forum vb. yerlerde insanların yorumlarını görebilirsin flutterflow hakkında.
-
@Hannibal_King sağol hocam bakacağım vakit buldukça.
@TeRRoR sağol hocam