首页 > 解决方案 > 手机屏幕关闭/锁定后 Firestore 删除/设置不起作用

问题描述

我有两个简单的按钮。一个是添加到购物车,另一个是从购物车中删除。我还使用 Provider 来跟踪每种产品的数量。一切工作正常,除非在手机上进行测试并且手机关闭/锁定较长时间。打开并点击按钮后,没有任何反应。有任何想法吗?这有什么问题吗?

发布规范.yaml

我刚刚升级到provider: ^4.3.2+3并将测试

provider: ^4.1.2

提供者地图:

  Map _cartIDSMap = {};
  Map get cartIDSMap => _cartIDSMap;
  set cartIDSMap(Map newValue) {
    _cartIDSMap = newValue;
    notifyListeners();
  } 

纽扣:

@override
  Widget build(BuildContext context) {
    CartController _cartController = CartController();
    User user = Provider.of<User>(context);
    Content content = Provider.of<Content>(context);

 Widget _addRemoveButtons() {
      return content.cartIDSMap[widget.food.code] != null
          ? CircleAvatar(
              child: IconButton(
                icon: Icon(Icons.remove),
                onPressed: () {
                  _cartController
                      .removeFoodFromCart(widget.food.code, user.uid)
                      .then((data) {
                    if (data) {
                      setState(() {
                        content.cartIDSMap.removeWhere(
                            (key, value) => key == widget.food.code);
                        _showToast("Removed from cart");
                      });
                    }
                  });
                },
              ),
            )
          : ... add button
    }

购物车控制器:

  Future removeFoodFromCart(code, uid) async {
    try {
      DocumentReference _ref = _db
          .collection('users')
          .doc(uid)
          .collection('cart')
          .doc(code.toString());

      await _ref.delete();
      return true;
    } catch (err) {
      print(err);
      return err;
    }
  }

标签: fluttergoogle-cloud-firestoreflutter-provider

解决方案


屏幕关闭时应用程序似乎没有运行的事实是设备的一项功能,而不是应用程序的问题。当屏幕关闭时,操作系统会很快关闭对网络应用程序的访问,以节省电池和网络带宽,以免给用户带来意外。通常,您不应期望应用程序在屏幕上正常运行。

不同的操作系统和应用程序框架为应用程序安排后台工作提供了特殊的方式。查看这些选项并选择可能适合您的用例的东西。可能需要大量的工作才能集成到该系统中。


推荐阅读