Как обновить количество товаров в корзине? - PullRequest
1 голос
/ 14 января 2020

Я внедряю, чтобы добавить в корзину элементы функциональности, успешно добавленные в корзину, но при повторном открытии приложения число счетчиков в значке корзины не обновляется, чем количество обновлений счетчиков. Кто-нибудь может мне помочь?

AppBar(
        title: Text("Home Page"),
        backgroundColor: Color.fromRGBO(37, 36, 36, 9),
        actions: <Widget>[
          Padding(
            padding: const EdgeInsets.only(right: 15, top: 10),
            child: InkWell(
              onTap: () {
                Navigator.push(context, new MaterialPageRoute<void>(
                  builder: (BuildContext context) {
                    return new Cart();
                  },
                ));
              },
              child: Badge(
                badgeContent: Text(
                  itemCount.toString(),
                  style: TextStyle(
                      fontFamily: 'Celias',
                      fontSize: 10,
                      color: Colors.white),
                ),
                badgeColor: Colors.green,
                child: Icon(
                  Icons.shopping_cart,
                  size: 30,
                ),
              ),
            ),
          ),

        ]);
void _getItemCount() async {
    counts = await db.getCartItemCount();
    setState(() {
      itemCount = counts;
    });
  }
Future<int> getCartItemCount() async {
    Database db = await this.database;
    return Sqflite.firstIntValue(await db.rawQuery("SELECT COUNT(*) FROM CART"));
  }

Я использую badges: ^1.1.0 зависимость для значка корзины. Я думаю, что состояние не обновляется каждый раз, поэтому счетчик не обновляется.

1 Ответ

3 голосов
/ 14 января 2020

Имхо, вы можете добавить await и затем позвонить _getItemCount()

onTap: () async {
    await Navigator.push(context, new MaterialPageRoute<void>(
        builder: (BuildContext context) {
            return new Cart();
        },
    ));
    _getItemCount();
}
...