1.01.01.06.008 - Flutter ile Mobil Uygulama Geliştirme Uzaktan Eğitim Kursu

Kodla Büyü
Arkadaşlar merhaba kodlarda hata alıyorum şu ana kadar yapılan kısımda e ticaret uygulamasıyla ilgili kodları benimle paylaşabilir misiniz? Kodları eşleştirerek hatayı bulmaya çalışacağım.
E/SQLiteLog(23134): (1) near "form": syntax error hata türü

galiba from yerine form yazmışsınız



import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:flutterveritabani/models/urun.dart';

class DbHelper
{
String tblUrun="urunler";
String colId="id";
String colAd="ad";
String coldfiyat="fiyat";
String colAciklama="Aciklama";

static final DbHelper _dbHelper=DbHelper._internal();
DbHelper._internal();
factory DbHelper()
{
return _dbHelper;
}

static Database _db;
Future<Database> get db async{
if(_db==null)
_db= await dbOlustur();
return _db;
}
Future<Database> dbOlustur() async
{
Directory directory=await getApplicationDocumentsDirectory();
String yol=directory.path+"eticaret.db";
var eTicaretDb=await openDatabase(yol,version: 1,onCreate: olustur);
return eTicaretDb;
}
void olustur(Database db,int versiyon) async
{

await db.execute("create table $tblUrun($colId integer primary key,$colAd text,$colAciklama text,$coldfiyat int)");

}
Future<int> ekle(Urun urun) async
{
Database db=await this.db;
var sonuc=await db.insert(tblUrun, urun.MapYap());
return sonuc;
}
Future<List> getUrunler() async
{
Database db=await this.db;
var sonuc=await db.rawQuery("select * from $tblUrun");
return sonuc;
}
}
 
bugünkü hatayı çözen var mı
RangeError (index): Invalid value: Valid value range is empty: 0
 
galiba from yerine form yazmışsınız



import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:flutterveritabani/models/urun.dart';

class DbHelper
{
String tblUrun="urunler";
String colId="id";
String colAd="ad";
String coldfiyat="fiyat";
String colAciklama="Aciklama";

static final DbHelper _dbHelper=DbHelper._internal();
DbHelper._internal();
factory DbHelper()
{
return _dbHelper;
}

static Database _db;
Future<Database> get db async{
if(_db==null)
_db= await dbOlustur();
return _db;
}
Future<Database> dbOlustur() async
{
Directory directory=await getApplicationDocumentsDirectory();
String yol=directory.path+"eticaret.db";
var eTicaretDb=await openDatabase(yol,version: 1,onCreate: olustur);
return eTicaretDb;
}
void olustur(Database db,int versiyon) async
{

await db.execute("create table $tblUrun($colId integer primary key,$colAd text,$colAciklama text,$coldfiyat int)");

}
Future<int> ekle(Urun urun) async
{
Database db=await this.db;
var sonuc=await db.insert(tblUrun, urun.MapYap());
return sonuc;
}
Future<List> getUrunler() async
{
Database db=await this.db;
var sonuc=await db.rawQuery("select * from $tblUrun");
return sonuc;
}
}

Hocam çok teşekkür ederim neredeyse 1 saattir işin içinden çıkamamıştım. Sorun halledildi :D
 
merhaba arkadaşlar
hocanın veritabanı ile ilgili derslere başlamadan verdiği bir ödev vardı yapabilirsiniz demişti
yapan var mı?
bir türlü mantığını kuramadım butona tıklandığında verileri alerte gönderemiyorum
yapan varsa yardımcı olursa şimdiden teşekkürler
 
urunlistesi.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutterveritabani/db/dbHelper.dart';
import 'package:flutterveritabani/models/urun.dart';

class UrunListesi extends StatefulWidget {
State<StatefulWidget> createState() => urunListesiState();
}

class urunListesiState extends State {
DbHelper dbHelper = new DbHelper();
List<Urun> urunler;
int urunSayisi = 0;

@override
Widget build(BuildContext context) {
// TODO: implement build
if (urunler == null) {
urunler = new List<Urun>();
getUrunler();
}
return ListView.builder(
itemCount: urunSayisi,
itemBuilder: (BuildContext context,int position){
return Card(
color: Colors.amberAccent,
elevation: 2,
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blue,
child: Text("aaa"),
),
title: Text(this.urunler[position].ad),
subtitle: Text(this.urunler[position].aciklama),
onTap: (){},
),
);

});
}

void getUrunler() {

var dbFuture = dbHelper.dbOlustur();
dbFuture.then((sonuc) {
var urunlerFuture = dbHelper.getUrunler();
urunlerFuture.then((data) {
List<Urun> urunlerData = new List<Urun>();
var gelenUrunSayisi = data.length;

for (int i = 0; i < gelenUrunSayisi; i++) {
urunlerData.add(Urun.fromObject(data));
}


setState(() {

urunSayisi = gelenUrunSayisi;

urunler = urunlerData;

});
});
});
}
}
 
Kod:
main.dart

import 'package:flutter/material.dart';
import 'package:flutterveritabani/db/dbHelper.dart';
import 'package:flutterveritabani/models/urun.dart';

import 'ekranlar/urunListesi.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    List<Urun> urunler = new List<Urun>();
    DbHelper dbHelper = new DbHelper();

  dbHelper.dbOlustur().then((database)=>dbHelper.getUrunler().then((GelenUrunler)=>urunler=GelenUrunler));
   dbHelper.dbOlustur().then((database) => {});

    Urun urun1 = new Urun("A8 2017", "Samsung", 2000);
    dbHelper.ekle(urun1);
    Urun urun2 = new Urun("M30", "Samsung", 1800);
    dbHelper.ekle(urun2);
    Urun urun3 = new Urun("S10", "Samsung", 12000);
    dbHelper.ekle(urun3);
    Urun urun4 = new Urun("Note 10", "Samsung", 14000);
    dbHelper.ekle(urun4);

   return MaterialApp(
     title: "E-Ticaret Demo",
     home:Anasayfa(),
   );

  }
}

class Anasayfa extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return AnasayfaState();
  }

}

class AnasayfaState extends State<Anasayfa>{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text("E-Ticaret Deneme2"),
      ),
      body: UrunListesi(),
    );
  }
}
 
Moderatör tarafında düzenlendi:
dbHelper.dart

import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:flutterveritabani/models/urun.dart';

class DbHelper
{
String tblUrun="urunler";
String colId="id";
String colAd="ad";
String colfiyat="fiyat";
String colAciklama="aciklama";

static final DbHelper _dbHelper=DbHelper._internal();
DbHelper._internal();
factory DbHelper()
{
return _dbHelper;
}

static Database _db;
Future<Database> get db async{
if(_db==null)
_db= await dbOlustur();
return _db;
}
Future<Database> dbOlustur() async
{
Directory directory=await getApplicationDocumentsDirectory();
String yol=directory.path+"eticaret.db";
var eTicaretDb=await openDatabase(yol,version: 1,onCreate: olustur);
return eTicaretDb;
}
void olustur(Database db,int versiyon) async
{

await db.execute("create table $tblUrun ($colId integer primary key,$colAd text,$colAciklama text,$colfiyat int)");

}
Future<int> ekle(Urun urun) async
{
Database db=await this.db;
var sonuc=await db.insert(tblUrun, urun.MapYap());
return sonuc;
}
Future<List> getUrunler() async
{
Database db=await this.db;
var sonuc=await db.rawQuery("select * from $tblUrun");
return sonuc;
}
}
 
Kod:
Urun.dart

class Urun {
  int _id;

  double get fiyat => _fiyat;

  set fiyat(double value) {
    _fiyat = value;
  }

  String _ad;

  int get id => _id;

  set id(int value) {
    _id = value;
  }

  String _aciklama;

  String get aciklama => _aciklama;

  set aciklama(String value) {
    _aciklama = value;
  }

double _fiyat;

  String get ad => _ad;

  set ad(String value) {
    _ad = value;
  }

  Urun(this._ad, this._aciklama, this._fiyat);
  Urun.Idli(this._id, this._ad, this._aciklama, this._fiyat);

  Map<String, dynamic> MapYap() {
    var map = Map<String, dynamic>();
    map["ad"] = _ad;
    map["aciklama"] = _aciklama;
    map["fiyat"] = _fiyat;
    if (_id != null) {
      map["id"] = _id;
    }
    return map;
  }

  Urun.fromObject(dynamic o) {
    this._id = o["id"];
    this._ad = o["ad"];
    this._aciklama = o["aciklama"];
    this._fiyat =double.tryParse(o["fiyat"].toString());
  }
}
 
Moderatör tarafında düzenlendi:
Bende bos donuyor. Dbhelper dosyasini atabilirmisiniz
Kod:
import 'package:fluttereticaret/models/Urun.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

class DbHelper {
  String tblUrun = "urunler";
  String colId = "id";
  String colAd = "ad";
  String colFiyat = "fiyat";
  String colAciklama = "aciklama";

  static final DbHelper _dbHelper = DbHelper._internal();

  DbHelper._internal();

  factory DbHelper() {
    return _dbHelper;
  }

  static Database _db;

  Future<Database> get db async {
    if (_db == null) {
      _db = await dbOlustur();
    }
    return _db;
  }

  Future<Database> dbOlustur() async {
    Directory directory = await getApplicationDocumentsDirectory();
    String yol = directory.path + "eticaret.db";

    var eTicaretdb=await openDatabase(yol,version: 1,onCreate: olustur);
    return eTicaretdb;

  }

  void olustur(Database db,int versiyon) async{
    await db.execute("Create table $tblUrun($colId integer primary key,$colAd text, $colAciklama text,$colFiyat int)");
  }

  Future<int> ekle(Urun urun) async{
    Database db=await this.db;
    var sonuc =await db.insert(tblUrun, urun.mapYap());
    return sonuc;
  }

  Future<List> getUrunler() async{
    Database db=await this.db;
    var sonuc=await db.rawQuery("Select * from $tblUrun");
    return sonuc;
  }
}
 
2 gündür uğraşıyorum ama ürünler sayfaya bir türlü gelmiyor.Diğer yerler çalışıyor. :(
dehADr.jpg
FSTwf4.jpg
https://hizliresim.com/FSTwf4
https://hizliresim.com/dehADr
 
UrunListesi.dart

49. satırı şöyle yapmanız lazım yukarıdaki örnek için:

urunlerData.add(Urun.fromObject(data"buraya köşeli parantezler içerisinde i yazın" ));

Ayrıca çalışan uygulamanın dart dosyaları (lib klasörü) ektedir. Bendeki proje adı fluttereticaret, import kısımlarını buna göre düzenlemeniz gerekebilir.
 

Ekli dosyalar

  • lib.zip
    3.2 KB · Görüntüleme: 72
Son düzenleme:
Çeşitli nedenlerle dersleri takip edemedim, yarına kadar izlenecek 8 saatlik (4 günlük) dersim duruyor. :confused:Bugün sabahlarım artık. Sınavda başarısız olursam tek nedeni uykusuzluk olur :D
 
UrunListesi.dart

49. satırı şöyle yapmanız lazım yukarıdaki örnek için:

urunlerData.add(Urun.fromObject(data"buraya köşeli parantezler içerisinde i yazın" ));

Ayrıca çalışan uygulamanın dart dosyaları (lib klasörü) ektedir. Bendeki proje adı fluttereticaret, import kısımlarını buna göre düzenlemeniz gerekebilir.
Tesekkurler hocam
 
main.dart

import 'package:flutter/material.dart';
import 'package:fluttereticaret/db/dbHelper.dart';
import 'package:fluttereticaret/models/Urun.dart';

import 'ekranlar/UrunListesi.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
List<Urun> urunler = new List<Urun>();
DbHelper dbHelper = new DbHelper();
dbHelper.dbOlustur().then((database) => {});

Urun urun1 = new Urun("55 inç TV", "Ultra Hd", 4500);
dbHelper.ekle(urun1);

Urun urun2 = new Urun("40 inç TV", "Ultra Hd", 3500);
dbHelper.ekle(urun2);

Urun urun3 = new Urun("65 inç TV", "Ultra Hd", 5500);
dbHelper.ekle(urun3);

return MaterialApp(
title: 'E Ticaret Demo',
home: Anasayfa(),
);
}
}

class Anasayfa extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return AnasayfaState();
}
}

class AnasayfaState extends State<Anasayfa> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("E-ticaret Uygulaması"),
),
body: UrunListesi(),
);
}
}
 
UrunListesi.dart

import 'package:flutter/material.dart';
import 'package:fluttereticaret/db/dbHelper.dart';
import 'package:fluttereticaret/models/Urun.dart';

import 'UrunDetay.dart';
import 'UrunEkle.dart';



class UrunListesi extends StatefulWidget{
State<StatefulWidget> createState()=>UrunListesiState();
}

class UrunListesiState extends State{
DbHelper dbHelper = new DbHelper();
List<Urun> urunler;
int urunSayisi = 0;


@override
Widget build(BuildContext context) {
if(urunler == null){
urunler = new List<Urun>();
getUrunler();
}
return Scaffold(
body: urunListesi(),
floatingActionButton: FloatingActionButton(
onPressed: (){urunEkleyeGit();},
child: Icon(Icons.add),
tooltip: "yeni ürün ekle",
),
);
}

ListView urunListesi(){
return ListView.builder(
itemCount: urunSayisi,
itemBuilder: (BuildContext context, int position){
return Card(
color: Colors.amberAccent,
elevation: 2.0,
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.blue,
child: Text("A"),
),
title: Text(this.urunler[position].ad),
subtitle: Text(this.urunler[position].aciklama),
onTap: (){detayaGit(this.urunler[position]);},
),
);
});
}

void getUrunler(){
var dbFuture = dbHelper.dbOlustur();
dbFuture.then((sonuc){
var urunlerFuture = dbHelper.getUrunler();
urunlerFuture.then((data){
List<Urun> urunlerData = new List<Urun>();
var gelenUrunSayisi = data.length;
for(int i = 0; i<gelenUrunSayisi; i++){
urunlerData.add(Urun.fromObject(data));
}
setState(() {
urunler = urunlerData;
urunSayisi = gelenUrunSayisi;
});
});
});

}

void detayaGit(Urun urun) async{
bool sonuc = await Navigator.push(context,MaterialPageRoute(builder:(context)=>UrunDetay(urun)));
if(sonuc!=null){
if(sonuc){
getUrunler();
}
}
}

void urunEkleyeGit() async {
bool sonuc = await Navigator.push(context, MaterialPageRoute(builder:(context)=>UrunEkle()));
if(sonuc!=null){
if(sonuc){
getUrunler();
}
}
}
}
 
UrunEkle.dart

import 'package:fluttereticaret/db/dbHelper.dart';
import 'package:fluttereticaret/models/Urun.dart';
import 'package:flutter/material.dart';

class UrunEkle extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return UrunEkleState();
}
}

class UrunEkleState extends State {
DbHelper dbHelper = new DbHelper();

TextEditingController txtAd = new TextEditingController();
TextEditingController txtAciklama = new TextEditingController();
TextEditingController txtFiyat = new TextEditingController();

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Yeni ürün ekle"),
),
body: Padding(
padding: EdgeInsets.only(top: 30.0, left: 10.0, right: 10.0),
child: Column(
children: <Widget>[
TextField(
controller: txtAd,
decoration: InputDecoration(labelText: "Ad"),
),
TextField(
controller: txtAciklama,
decoration: InputDecoration(labelText: "Açıklama"),
),
TextField(
controller: txtFiyat,
decoration: InputDecoration(labelText: "Fiyat"),
),
FlatButton(
child: Text("Ekle"),
onPressed: (){ekle();},
)
],
),
),
);
}

void ekle() async{
int sonuc = await dbHelper.ekle(Urun(txtAd.text, txtAciklama.text, double.tryParse(txtFiyat.text)));
if(sonuc !=0){
Navigator.pop(context,true);
AlertDialog alertDialog =new AlertDialog(
title: Text("Başarılı"),
content: Text("Yeni ürün başarıyla eklendi : ${txtAd.text}"),
);

showDialog(context: context, builder: (_)=>alertDialog);
}
}
}
 
UrunDetay.dart

import'package:fluttereticaret/db/dbHelper.dart';
import'package:fluttereticaret/models/Urun.dart';
import'package:flutter/material.dart';

class UrunDetay extends StatefulWidget{
Urun urun;
UrunDetay(this.urun);

@override
State<StatefulWidget> createState() {
return UrunDetayState(urun);
}
}
DbHelper dbHelper = new DbHelper();
enum Secenek {Sil,Guncelle}
class UrunDetayState extends State{
Urun urun;
UrunDetayState(this.urun);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Ürün detayı : ${urun.ad}"),
actions: <Widget>[
PopupMenuButton<Secenek>(
onSelected: islemSec,
itemBuilder: (BuildContext context)=> <PopupMenuEntry<Secenek>>[
PopupMenuItem<Secenek>(
value: Secenek.Sil,
child: Text("Ürünüsil"),
),
PopupMenuItem<Secenek>(
value: Secenek.Guncelle,
child: Text("Ürünü güncelle"),
)
],
)
],
),
body: Center(
child: Card(
child: Column(
children: <Widget>[
ListTile(
leading: Icon(Icons.shop),
title:Text(urun.ad),
subtitle: Text(urun.aciklama),
),
Text("${urun.ad} için fiyat : ${urun.fiyat}"),
ButtonBar(
children: <Widget>[
FlatButton(
child: Text("Sepete ekle"),
onPressed: (){
AlertDialog alertDialog =new AlertDialog(
title: Text("Başarılı"),
content: Text("Sepete eklendi"),
);

showDialog(context: context, builder: (_)=>alertDialog);
},
)
],
)
],
),
),
),
);
}

void islemSec(Secenek secenek) async{
int sonuc;
switch(secenek){
case Secenek.Sil:
Navigator.pop(context,true);
sonuc = await dbHelper.sil(urun.id);
if(sonuc!=0){
AlertDialog alertDialog =new AlertDialog(
title: Text("Başarılı"),
content: Text("Ürün silindi : ${urun.ad}"),
);

showDialog(context: context, builder: (_)=>alertDialog);
}
break;
default:
}
}
 
Urun.dart

class Urun{
int _id;
String _ad;
String _aciklama;
double _fiyat;

Urun(this._ad,this._aciklama,this._fiyat);
Urun.withId(this._id,this._ad,this._aciklama,this._fiyat);

int get id => _id;

set id(int value) {
_id = value;
}

String get ad => _ad;

set ad(String value) {
_ad = value;
}

String get aciklama => _aciklama;

set aciklama(String value) {
_aciklama = value;
}

double get fiyat => _fiyat;

set fiyat(double value) {
_fiyat = value;
}

Map<String, dynamic> mapYap(){
var map = Map<String,dynamic>();
map["ad"] = _ad;
map["aciklama"] = _aciklama;
map["fiyat"] = _fiyat;
if(_id!=null){
map["id"] = _id;
}

return map;
}

Urun.fromObject(dynamic o){
this._id = o["id"];
this._ad = o["ad"];
this._aciklama = o["aciklama"];
this._fiyat = double.tryParse(o["fiyat"].toString());
}

}
 
dbHelper.dart

import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
import 'package:fluttereticaret/models/Urun.dart';

class DbHelper{
String tblUrun = "urunler";
String colId="id";
String colAd="ad";
String colFiyat="fiyat";
String colAciklama ="aciklama";

static final DbHelper _dbHelper = DbHelper._internal();

DbHelper._internal();

factory DbHelper(){
return _dbHelper;
}
static Database _db;

Future<Database> get db async{
if (_db=null){
_db =await dbOlustur();
}

return _db;
}

Future<Database> dbOlustur() async{
Directory directory = await getApplicationDocumentsDirectory();
String yol = directory.path + "eticaret.db";

var eTicaretDb = await openDatabase(yol,version: 1, onCreate: olustur);
return eTicaretDb;
}

void olustur(Database db, int versiyon) async{
await db.execute("Create table $tblUrun($colId integer primary key, $colAd text, $colAciklama text, $colFiyat int)");
}

Future<int> ekle(Urun urun) async {
Database db = await this.db;
var sonuc = await db.insert(tblUrun, urun.mapYap());
return sonuc;
}

Future<int> sil(int id) async {
Database db = await this.db;
var sonuc = await db.rawDelete("Delete from $tblUrun where $colId = $id");
return sonuc;
}

Future<List> getUrunler() async{
Database db = await this.db;
var sonuc = await db.rawQuery("Select * from $tblUrun");
return sonuc;
}
 

Ekli dosyalar

  • 20200423_133643_resized.jpg
    20200423_133643_resized.jpg
    81.9 KB · Görüntüleme: 111
  • 20200423_133648_resized.jpg
    20200423_133648_resized.jpg
    69.3 KB · Görüntüleme: 84
Geri
Üst