folder Tahribat.com Forumları
linefolder Mobil Programlama
linefolder Flutter İle App - Yardım



Flutter İle App - Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tarzan
    tarzan's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    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']}"),
                            );
                          },
                        ),
                      ),
              ],
            ),
          ),
        );
      }
    }
    

     

    tarzan tarafından 07/Kas/24 22:53 tarihinde düzenlenmiştir

    Çalışmadan, yorulmadan, öğrenmeden rahat yaşama yollarını itiyat haline getiren milletler; önce haysiyetlerini, sonra istikballerini daha sonra da hürriyetlerini kaybetmeye mahkumdurlar. M. Kemal Atatürk
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    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.

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tarzan
    tarzan's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    @Hannibal_King sağol hocam bakacağım eve geçince.

    Arkadaşlar Hannibal hocanın paylaştığı gibi nocode platform tavsiyesi verebilir misiniz?


    Çalışmadan, yorulmadan, öğrenmeden rahat yaşama yollarını itiyat haline getiren milletler; önce haysiyetlerini, sonra istikballerini daha sonra da hürriyetlerini kaybetmeye mahkumdurlar. M. Kemal Atatürk
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    Flutterflow isini cozer


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek
    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?

    https://www.adalo.com/

    https://thunkable.com/

    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.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tarzan
    tarzan's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    @Hannibal_King sağol hocam bakacağım vakit buldukça.

    @TeRRoR sağol hocam 


    Çalışmadan, yorulmadan, öğrenmeden rahat yaşama yollarını itiyat haline getiren milletler; önce haysiyetlerini, sonra istikballerini daha sonra da hürriyetlerini kaybetmeye mahkumdurlar. M. Kemal Atatürk
Toplam Hit: 946 Toplam Mesaj: 6
flutter satıcı uygulaması