Как показать общую цену в моем текстовом виджете во флаттере - PullRequest
0 голосов
/ 17 июня 2020

Я хочу показать общую стоимость во флаттерном интерфейсе с виджетом tezt. Я попробовал необработанный запрос

var sonuc=await db.rawQuery("SELECT SUM(gelirTutar) FROM gelirIslem");

, он вернул QueryResultSet результат [{SUM (gelirTutar): 70.0}] и выдает ошибку. Необработанное исключение: тип 'List>' не является подтипом типа 'String '

Как я могу отобразить данные «70.0» в моем текстовом виджете

этот код мой метод суммы

Future gelirTopla()async{
    var db=await _getDatabase();
    var sonuc=await db.rawQuery("SELECT SUM(gelirTutar) FROM gelirIslem");

   print("gelir:"+sonuc.toString());
    return sonuc;
  }

и этот дизайн пользовательского интерфейса кода

class KasaIslem extends StatefulWidget {
  @override
  _KasaIslemState createState() => _KasaIslemState();
}

class _KasaIslemState extends State<KasaIslem> {
  double toplamGelir;
  DatabaseHelper databaseHelper;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    databaseHelper=DatabaseHelper();
    setState(() {
      gelirHesapla();

    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Kasa İşlemleri"),
        ),
        body: Column(
          children: <Widget>[


                        Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: <Widget>[
                            Padding(
                              padding: const EdgeInsets.all(8.0),
                              child: Text(
                                "Günlük Gelir:",
                                style: TextStyle(color: Colors.redAccent),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.all(8.0),
                              child: Text(
                                toplamGelir.toString(),
                                style: TextStyle(color: Colors.redAccent),
                              ),
                            ),
                          ],
                        ),

                      ],
                    ),
                  );


  }

  void gelirHesapla() async{
    var toplam=await databaseHelper.gelirTopla();
    setState(() {
      print("ttt"+toplam.toList());
      toplamGelir=toplam;
    });


  }
}

1 Ответ

0 голосов
/ 17 июня 2020

rawQuery всегда возвращает список карт, поэтому вам нужно извлечь строку. Если вы обновите запрос на:

var sonuc=await db.rawQuery("SELECT SUM(gelirTutar) as sum FROM gelirIslem");

, тогда результат должен быть [{sum: 70.0}], поэтому вы можете выполнить sonuc.first["sum"], чтобы получить счет.

...