我为图像设置了一个图标按钮,以使用户可以选择喜欢的图像,但是当我转到另一页面或重新打开应用程序时,喜欢的照片再次被取消喜欢。如何确保喜欢的照片当我重新打开它时仍然喜欢吗?
P.S。-我可以在新屏幕上显示所有我喜欢的照片吗?
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(),
),
),
],
);
}
}
除非我不喜欢它,否则即使关闭应用程序或转到其他屏幕后,我还是会永久喜欢这张照片。
答案 0 :(得分:1)
让您的应用记住任何取决于2个主要因素的数据:
1-您的数据容器(变量,数据库等)的生存期
2-您要在其中使用数据(类,页面,应用程序)的范围
根据我对您的问题的理解。您希望您的应用在关闭/重新打开按钮后记住其状态。
通常,Dart
中使用的大多数数据变量都存储在移动易失性存储器(RAM)中。这使得它们在关闭您的应用程序后立即被操作系统清除。这样可以帮助其他正在运行的Apps查找要使用的内存空间。
因此,将按钮的状态存储在常用变量(如bool
)中对您没有帮助。
要解决您的问题,您有2种非易失性数据存储方法:
1-使用SQLite
数据库将用按钮键引用的按钮状态存储为primary key
。 (SQLite
将数据存储在App包内的DB永久文件中)。 Read from here
2-最简单,最快的方法:使用sharedPreferences
将每个Button键引用的Button状态存储为`sharedPreferences Read from here
希望我能帮助您