flutter - 手机屏幕关闭/锁定后 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;
}
}
解决方案
屏幕关闭时应用程序似乎没有运行的事实是设备的一项功能,而不是应用程序的问题。当屏幕关闭时,操作系统会很快关闭对网络应用程序的访问,以节省电池和网络带宽,以免给用户带来意外。通常,您不应期望应用程序在屏幕上正常运行。
不同的操作系统和应用程序框架为应用程序安排后台工作提供了特殊的方式。查看这些选项并选择可能适合您的用例的东西。可能需要大量的工作才能集成到该系统中。
推荐阅读
- wordpress - 如何为 WordPress 中的所有 cookie 添加 sameSite=None 属性标头?
- javascript - 如何将多个值添加到本地存储中的键
- javascript - 格式化日期时不考虑时间的时刻本地化?
- php - 当正则表达式测试似乎工作时,预匹配为空
- reactjs - 如何在 ReactJS 中第二次单击时撤消 OnClick 功能
- javascript - 使用脚本拆分 PDF,但不能使用横向 PDF
- swift - 在swift5中将对象列表中的值收集到字典中
- php - 无法使用 iPhone 上的媒体库通过表单上传文件
- bash - 根据文本输出计算退出代码
- javascript - 反应在组件内部获取文本