Firebase 当用户离开页面时,颤振剖面图消失

Firebase 当用户离开页面时,颤振剖面图消失,firebase,flutter,dart,flutter-layout,flutter-animation,Firebase,Flutter,Dart,Flutter Layout,Flutter Animation,伙计们,我真的需要这方面的帮助,我在我的用户配置文件页面中实现了一个上传配置文件图片,一切正常,唯一的问题是当用户离开此屏幕并返回到同一特定屏幕时,上传的图像立即消失 期待您的回复,谢谢 这是处理所选文件和图片上传的代码 class _UserProfileState extends State<UserProfile> { DocumentSnapshot userDoc; File _image; String _uploadedFileURL; Future

伙计们,我真的需要这方面的帮助,我在我的用户配置文件页面中实现了一个上传配置文件图片,一切正常,唯一的问题是当用户离开此屏幕并返回到同一特定屏幕时,上传的图像立即消失

期待您的回复,谢谢

这是处理所选文件和图片上传的代码

class _UserProfileState extends State<UserProfile> {
  DocumentSnapshot userDoc;

  File _image;
  String _uploadedFileURL;

  Future chooseFile() async {
    await ImagePicker.pickImage(source: ImageSource.gallery).then((image) {
      setState(() {
        _image = image;
      });
    });
    uploadImage(_image);
  }

  Future<String> uploadImage(var imageFile) async {
    StorageReference ref = FirebaseStorage.instance
        .ref()
        .child('chats/${Path.basename(_image.path)}}');
    StorageUploadTask uploadTask = ref.putFile(imageFile);

    var dowurl = await (await uploadTask.onComplete).ref.getDownloadURL();
    _uploadedFileURL = dowurl.toString();

    return _uploadedFileURL;
  }

为什么不尝试缓存NetworkImage?谢谢,但我已经尝试过了,仍然没有成功,我认为问题在于每次重新访问页面时,firestore上传的图片都是空的,这使得它将另一个占位符图片设置为其图片,似乎无法找到任何代码来修复该问题_上载的文件URL!=无效的CachedNetworkImage(imageUrl:_uploadedFileURL,:Image.asset('assets/avatar_profile.jpg'),`您在配置文件小部件中的哪里设置
\u uploadedFileURL
?我没有看到任何这样的赋值,这使得每次打开页面时它都为空
@override
  Widget build(BuildContext context) {
    var firebaseUser = FirebaseAuth.instance.currentUser;
    return StreamBuilder(
        stream: FirebaseFirestore.instance
            .collection('user_profile')
            .doc(firebaseUser.uid)
            .snapshots(),
        builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
          if (!snapshot.hasData) {
            return Center(child: CircularProgressIndicator());
          }
          userDoc = snapshot.data;
          return SafeArea(
            child: Scaffold(
              floatingActionButton: FloatingActionButton(
                child: Icon(
                  Icons.edit,
                  color: Colors.white,
                ),
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) {
                        return EditUserProfile(userData: userDoc);
                      },
                    ),
                  );
                },
              ),
              body: SafeArea(
                child: Container(
                  padding: EdgeInsets.only(top: 10),
                  child: Column(
                    children: [
                      Align(
                        alignment: Alignment.centerLeft,
                        child: IconButton(
                          onPressed: () {
                            Navigator.pushNamed(context, Homepage.id);
                          },
                          icon: Icon(
                            Icons.arrow_back,
                            color: Colors.white,
                            size: 30,
                          ),
                        ),
                      ),
                      GestureDetector(
                        onTap: chooseFile,
                        child: Stack(
                          children: [
                            CircleAvatar(
                              radius: 70,
                              backgroundColor: Colors.transparent,
                              child: Container(
                                child: _uploadedFileURL == null
                                    ? ImageBeforeUpload(
                                        image: _image, //This shows immediately when user chooses an image
//                              onTap: chooseFile,
                                      )
                                    : ImageUploaded(
                                        uploadedFileURL: _uploadedFileURL // //This shows when image has been uploaded successfully but disappears when user leaves page and come back to this page
                                ),
                              ),
                            ),
                            Positioned(
                              bottom: 0,
                              right: 0,
                              child: CircleAvatar(
                                backgroundColor: Colors.white60,
                                radius: 25,
                                child: IconButton(
                                  onPressed: chooseFile,
                                  icon: Icon(Icons.edit, color: Colors.blueGrey),
                                ),
                              ),
                            )
                          ],
                        ),
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      IntrinsicHeight(
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: [
                            Text(
                              userDoc.data()['nickname'] ?? '',
                              style: TextStyle(
                                  color: Colors.white,
                                  fontWeight: FontWeight.w900),
                            ),
                            VerticalDivider(
                              thickness: 3,
                              width: 20,
                              color: Colors.white,
                            ),
                            Text(
                              userDoc.data()['age'] ?? '',
                              style: TextStyle(
                                color: Colors.white,
                              ),
                            ),
                          ],
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.all(20.0),
                        child: Card(
                          child: Column(
                            children: [
                              ListTile(
                                leading: Icon(
                                  Icons.person,
                                  size: 40,
                                ),
                                title: Text("About me"),
                                isThreeLine: false,
                                dense: true,
                                subtitle: Text(userDoc.data()['aboutMe'] ?? ''),
                                trailing: Icon(Icons.arrow_right),
                              )
                            ],
                          ),
                        ),
                      ),
                      Expanded(
                        child: Container(
                          width: 400,
                          child: ListView(
                            children: [
                              ProfileListTile(
                                leading: Icons.phone_in_talk,
                                title: 'Phone Number',
                                subtitle: userDoc.data()['mobile'] ?? '',
                              ),
                              ProfileListTile(
                                leading: Icons.add_location,
                                title: 'Current Location',
                                subtitle: userDoc.data()['location'] ?? '',
                              ),
                              ProfileListTile(
                                leading: FontAwesomeIcons.heartbeat,
                                title: 'Relationship Status',
                                subtitle: userDoc.data()['maritalStatus'] ?? '',
                              ),
                              ProfileListTile(
                                leading: Icons.people,
                                title: 'Gender',
                                subtitle: userDoc.data()['gender'] ?? '',
                              ),
                              ProfileListTile(
                                leading: Icons.looks,
                                title: 'Interested In',
                                subtitle: userDoc.data()['interestedIn'] ?? '',
                              ),
                              // Padding(
                              //   padding: const EdgeInsets.symmetric(
                              //       horizontal: 50.0, vertical: 10),
                              //   child: Row(
                              //     mainAxisAlignment:
                              //         MainAxisAlignment.spaceBetween,
                              //     children: [
                              //       Column(
                              //         children: [
                              //           IconButton(
                              //               icon: Icon(Icons.phone,
                              //                   color: Colors.white),
                              //               onPressed: null),
                              //           Text(
                              //             'Call Me',
                              //             style: klistTileTitle,
                              //           ),
                              //         ],
                              //       ),
                              //       Column(
                              //         children: [
                              //           IconButton(
                              //               icon: Icon(Icons.message,
                              //                   color: Colors.white),
                              //               onPressed: null),
                              //           Text(
                              //             'Message',
                              //             style: klistTileTitle,
                              //           )
                              //         ],
                              //       ),
                              //       Column(
                              //         children: [
                              //           IconButton(
                              //               icon: FaIcon(
                              //                 FontAwesomeIcons.whatsapp,
                              //                 color: Colors.white,
                              //               ),
                              //               onPressed: () async {}),
                              //           Text('Whatsapp', style: klistTileTitle)
                              //         ],
                              //       ),
                              //     ],
                              //   ),
                              // )
                            ],
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            ),
          );
        },
    );



class ImageUploaded extends StatelessWidget {
  ImageUploaded({this.uploadedFileURL});

  final String uploadedFileURL;

  @override
  Widget build(BuildContext context) {
    return CircleAvatar(
      radius: 80,
      child: ClipOval(
        child: uploadedFileURL != null
            ? Image.network(uploadedFileURL,
                height: 200, width: 200, fit: BoxFit.fill)
            : Image.asset('assets/avatar_profile.jpg'),
      ),
    );
  }
}

class ImageBeforeUpload extends StatelessWidget {
  ImageBeforeUpload({this.image});
  final File image;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      child: CircleAvatar(
        radius: 70,
        child: ClipOval(
          child: image != null
              ? Image.asset(image.path,
                  height: 200, width: 200, fit: BoxFit.fill)
              : Image.asset('assets/avatar_profile.jpg'),
        ),
      ),
    );
  }
}