有没有办法在喜欢按钮上使用共享首选项
Is there a way to use shared preference on a like button
我有一个最喜欢的图像按钮,点击它会变成红色,但它不会存储它,当我重新打开它时,它就不喜欢了。所以我想知道我们是否可以对它给予共享偏好来存储喜欢的 button.Does 有人知道如何做到吗?
the complete code-
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(),
),
),
],
);
}
}
你可以使用shared_preferences插件来持久化收藏夹按钮是否被按下,然后在Widget
初始化时恢复持久化值。
class FavoriteWidget extends StatefulWidget {
@override
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
class _FavoriteWidgetState extends State<FavoriteWidget> {
static const likedKey = 'liked_key';
bool liked;
@override
void initState() {
super.initState();
_restorePersistedPreference();
}
void _restorePersistedPreference() async {
var preferences = await SharedPreferences.getInstance();
var liked = preferences.getBool(likedKey) ?? false;
setState(() => this.liked = liked);
}
void _persistPreference() async {
setState(() => liked = !liked);
var preferences = await SharedPreferences.getInstance();
preferences.setBool(likedKey, liked);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: liked == null
? Center(child: CircularProgressIndicator())
: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
child: IconButton(
icon: Icon(
liked ? Icons.favorite : Icons.favorite_border,
color: liked ? Colors.red : Colors.grey,
),
onPressed: _persistPreference,
),
),
],
),
);
}
}
我有一个最喜欢的图像按钮,点击它会变成红色,但它不会存储它,当我重新打开它时,它就不喜欢了。所以我想知道我们是否可以对它给予共享偏好来存储喜欢的 button.Does 有人知道如何做到吗?
the complete code-
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(),
),
),
],
);
}
}
你可以使用shared_preferences插件来持久化收藏夹按钮是否被按下,然后在Widget
初始化时恢复持久化值。
class FavoriteWidget extends StatefulWidget {
@override
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
class _FavoriteWidgetState extends State<FavoriteWidget> {
static const likedKey = 'liked_key';
bool liked;
@override
void initState() {
super.initState();
_restorePersistedPreference();
}
void _restorePersistedPreference() async {
var preferences = await SharedPreferences.getInstance();
var liked = preferences.getBool(likedKey) ?? false;
setState(() => this.liked = liked);
}
void _persistPreference() async {
setState(() => liked = !liked);
var preferences = await SharedPreferences.getInstance();
preferences.setBool(likedKey, liked);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: liked == null
? Center(child: CircularProgressIndicator())
: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
child: IconButton(
icon: Icon(
liked ? Icons.favorite : Icons.favorite_border,
color: liked ? Colors.red : Colors.grey,
),
onPressed: _persistPreference,
),
),
],
),
);
}
}