dart - 如何在颤动中管理图像上的点赞按钮
问题描述
我为图像制作了一个图标按钮,让用户可以选择喜欢该图像,但是当我转到另一个页面或重新打开应用程序时,喜欢的照片再次不被喜欢。如何确保我喜欢的照片仍然喜欢如果我重新打开它?
PS-我可以在新屏幕上显示我喜欢的所有照片吗?
class FavoriteWidget extends StatefulWidget {
@override
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
class _FavoriteWidgetState extends State<FavoriteWidget> {
bool liked = false;
_pressed() {
setState(() {
liked = !liked;
});
}
@override
Widget build(BuildContext context) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
child: IconButton(
icon: Icon(liked ?Icons.favorite: Icons.favorite_border,
color: liked ? Colors.red :Colors.grey ),
onPressed: () => _pressed(),
),
),
],
);
}
}
即使在关闭应用程序或转到其他屏幕后,我也会永久喜欢这张照片,除非我不喜欢它。
解决方案
让您的应用记住取决于两个主要因素的任何类型的数据:
1- 数据容器(变量、数据库等)的生命周期
2- 您希望使用数据的范围(类、页面、应用程序)
根据我在您的问题中的理解。您希望您的应用程序在关闭/重新打开按钮后记住它的状态。
通常,大多数类型的数据变量用于Dart
存储在移动易失性存储器(RAM)中。这使得它们在关闭您的应用程序后就被操作系统清理。这有助于其他正在运行的应用程序找到可以使用的内存空间。
因此,将 Button 的状态存储在常用变量(如:)bool
中对您的情况没有帮助。
解决您的问题您有 2 种非易失性存储数据的方法:
1- 使用SQLite
DB 将使用按钮键引用的 Button 状态存储为primary key
. (SQLite
将您的数据存储在 App 包内的数据库永久文件中)。从这里阅读
2-最简单和最快的方法:使用 asharedPreferences
将每个 Button 键引用的 Buttons 状态存储为 `sharedPreferences 中的键值对从此处读取
希望我能帮助你
推荐阅读
- angularjs - 视图更改上的定位卡
- reactjs - 如何在 DevOps 中根据其发布阶段设置变量?
- delphi - 如何使用 Postman 向 Datasnap 服务器发送多个值
- css - 如何将字符串添加到 Django 模板?
- android - 尝试在真实设备上运行实时视频时,Exoplayer 显示空白屏幕
- javascript - 控制台日志返回 null
- scala - scala 中的“不符合 trait Builder 的类型参数界限”是什么意思?
- python - python中的字符串是可变的,如果不解释这个?
- android - 证明开源 Android
- c# - 验证几个字段不重复