Как получить сумму значений столбцов в sqflite в флаттер? - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу получить итоговые значения столбца цены, сохранить его в переменной и вернуть его ... Я просмотрел другие посты, одна из которых - вопрос, который я задаю, но он был на родной android, и яЯ новичок в sqflite, поэтому я не мог понять, как написать код.Поэтому, пожалуйста, помогите мне с предложениями.

это мой код столбцов, которые я использую

void _onCreate(Database db, int version) async {
await db.execute(
    "CREATE TABLE Cart(id INTEGER PRIMARY KEY,name TEXT, price TEXT,category 
TEXT,images TEXT)");
print("DB created");
}

Я пытаюсь сделать это

Future calculateTotal() async{
var dbClient = await db;// couldnt figure out after this
var cursor = dbClient.rawQuery("SELECT SUM(price) as Total FROM Cart", 
null);
if(cursor.move)
}

Ответы [ 2 ]

0 голосов
/ 23 июля 2019
Future<List> calculateTotal() async {
  var dbClient = await db;
  var result = await dbClient.rawQuery("SELECT * FROM Cart");
  return result.toList();
}

int _total = 0;
List priceList;

void _calcTotal() async{
   priceList = await db.calculateTotal();
   priceList.forEach((price){ _total = _total + price['price'];});
   print(_total);
   setState(() => _total = total);
}

@override
Widget build(BuildContext context) {
   ...  
   Text(_total != null ? _total : 'waiting ...', ... )
0 голосов
/ 08 февраля 2019

Согласно https://www.techiediaries.com/flutter-sqlite-crud-tutorial/ это должно сделать:

Future calculateTotal() async {
  var dbClient = await db;
  var result = await dbClient.rawQuery("SELECT SUM(price) as Total FROM Cart");
  print(result.toList());
}

int _total;

void _calcTotal() async{
  var total = (await db.calculateTotal())[0]['Total'];
  print(total);
  setState(() => _total = total)
}

@override
Widget build(BuildContext context) {
  ...  
  Text(_total != null ? _total : 'waiting ...', ... )
...