如何在颤动的图像上管理像按钮

问题描述 投票:0回答:1

我为图像制作了一个图标按钮,让用户可以选择喜欢的图像,但是当我转到另一个页面或重新打开应用程序时,我想要的照片再次不受欢迎。我怎样才能确保我喜欢的照片仍然被喜欢如果我重新打开它?

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(),
              ),

        ),

      ],
    );
  }
}

除了关闭应用程序或转到其他屏幕之外我永远喜欢照片,除非我不喜欢它。

dart flutter facebook-like
1个回答
1
投票

让您的应用记住依赖于两个主要因素的任何类型的数据:

1-数据容器的生命周期(变量,数据库等)

2-您要使用数据的范围(类,页面,应用程序)

从我在你的问题中理解。您希望应用程序在关闭/重新打开按钮后记住按钮的状态。

通常,Dart中使用的大多数数据变量都存储在移动易失性存储器(RAM)中。这使得他们暴露在关闭你的应用程序后由操作系统清理。这有助于其他运行的应用程序找到可用的内存空间。

因此,将按钮的状态存储在常用变量中(例如:bool)对您的情况没有帮助。

解决您的问题您有2种非易失性存储数据的方法:

1-使用SQLite DB将按钮键引用的Button状态存储为primary key。 (SQLite将您的数据存储在App包内的数据库永久文件中)。 Read from here

2-最简单快捷的方法:使用sharedPreferences将每个Button键引用的Buttons状态存储为`sharedPreferences Read from here中的Key值对

希望我能帮助你

© www.soinside.com 2019 - 2024. All rights reserved.