Получите сумму столбца из SQFLITE с помощью Streambuilder в flutter

#flutter #sqflite

Вопрос:

Я начал изучать flutter и в настоящее время работаю над проектом простой работы с CRUD с помощью SQFLITE. где у меня есть таблица транзакций,в которой есть 6 столбцов (идентификатор,тип транзакции,дата,Категория,Сумма, примечания).итак, я хочу получить сумму столбца общей суммы с помощью StreamBuilder. Я пытался, но это не сработает для меня, кто-нибудь, пожалуйста, помогите мне здесь, я так рад…..

ВОТ МОЯ МОДЕЛЬ—

 class TransactionModel {
  int id;
  String type;
  String date;
  String categoryid;
  String amount;
  String notes;

  TransactionModel(
      {this.id,
      this.type,
      this.date,
      this.categoryid,
      this.amount,
      this.notes});

  factory TransactionModel.fromDatabaseJson(Map<String, dynamic> data) =>
      TransactionModel(
          id: data['id'],
          type: data['type'],
          date: data['date'],
          categoryid: data['categoryid'],
          amount: data['amount'],
          notes: data['notes']);

  Map<String, dynamic> toDatabaseJson() => {
        'id': this.id,
        'type': this.type,
        'date': this.date,
        'categoryid': this.categoryid,
        'amount': this.amount,
        'notes': this.notes
      };
}

 

ВОТ МОЯ БУДУЩАЯ ФУНКЦИЯ ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ В СТОЛБЦЕ ОБЩАЯ СУММА —-

 Future getsumofIncome(String type) async {
    final db = await dbProvider.database;
    var incomeresult = await db.rawQuery(
        "SELECT SUM(amount) FROM  $transactionTABLE WHERE type = ?", ["$type"]);
    int incomevalue = incomeresult[0]['SUM(amount)'];
    print('Result of Income Sum Amount  $incomevalue');
    // print(incomeresult.toList());
    return incomevalue;
  }
 

ВОТ МОЯ ЧАСТЬ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА ДЛЯ ОТОБРАЖЕНИЯ ВЫБОРКИ ДАННЫХ ИЗ ФАЙЛА БАЗЫ ДАННЫХ. Я использую для этого StreamBuilder, но он не работает в соответствии со мной…..
Позвольте мне упомянуть здесь, что я также использую шаблон блока здесь для своего проекта, я просто поставил свою логическую функцию выше, вы проверяете, как я вычисляю значение…

                 stream: transactionBloc.getsumofIncome('Income'),
                builder: (BuildContext context,
                    AsyncSnapshot<TransactionModel> incomesnapshot) {
                  if (incomesnapshot.hasData) {
                    return Container(
                      padding: EdgeInsets.all(10.0),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          Text(
                            'Income',
                            style: TextStyle(fontSize: 20.0),
                          ),
                          Text(
                            incomesnapshot != null
                                ? '₹ ${incomesnapshot.toString()}'
                                : '0',
                            style:
                                TextStyle(fontSize: 20.0, color: Colors.green),
                          ),
                        ],
                      ),
                    );
                  } else {
                    CircularProgressIndicator();
                  }
                }),