代码之家  ›  专栏  ›  技术社区  ›  Arjun Malhotra

为什么Circle头像最初显示的是蓝色背景,而不是默认的图片集Flatter?

  •  0
  • Arjun Malhotra  · 技术社区  · 2 年前

    我有一个应用程序在颤振侧菜单。圆圈化身应该显示默认的个人资料图片,因为用户尚未设置。当我第一次安装它时,它应该是这样的: enter image description here

    enter image description here

    这是代码:

    GestureDetector(
                                  onTap: () async {
                                    newphoto = await Navigator.push(
                                        context,
                                        MaterialPageRoute(
                                            builder: ((context) => ProfilePage(
                                                uname: context
                                                    .read<ProfileDetails>()
                                                    .name //username,
                                                ))));
    
                                    saveimageside(newphoto);
                                  },
                                  child: profileimage != ''
                                      ? CircleAvatar(
                                          backgroundImage:
                                              FileImage(File(profileimage)),
                                          radius:
                                              MediaQuery.of(context).size.height *
                                                  0.05,
                                        )
                                      : CircleAvatar(
                                          backgroundImage: const AssetImage(
                                              'assets/profile1.png'),
                                          radius:
                                              MediaQuery.of(context).size.height *
                                                  0.05,
                                        )),
    

    在构建之外,我有:

    String profileimage = ''; 
    
     saveimageside(path) async {
        SharedPreferences saveimageside = await SharedPreferences.getInstance();
        setState(() {
          saveimageside.setString("imagePathside", path);
        });
      }
    
      loadimageside() async {
        SharedPreferences saveimageside = await SharedPreferences.getInstance();
        setState(() {
          profileimage = saveimageside.getString("imagePathside").toString();
        });
      }
    
    

    这段代码不是我写的,而是我之前的人写的。

    只有当我使用删除配置文件图片功能将路径设置为“”时,蓝色容器才会被默认图像替换。这没关系,但我希望应用程序在用户首次安装时也显示默认值

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kaushik Chandru    2 年前

    您已经检查了它是否为空,但例如,当您第一次打开应用程序时,没有设置路径,然后调用loadimageSide()方法,结果将得到null,并将其保存在变量profileImage中。所以现在profileImage的值为“null”;

    您可以在获得图像时进行管理

    loadimageside() async {
        SharedPreferences saveimageside = await SharedPreferences.getInstance();
        setState(() {
          profileimage = saveimageside.getString("imagePathside") ?? "";
        });
      }
    

    现在,如果图像为空,那么它将分配一个空字符串。