Изображение firestore не загружается на страницу профиля - PullRequest
1 голос
/ 27 мая 2020

когда я пытаюсь извлечь изображение профиля из базы данных firestore, на странице профиля отображается следующая ошибка: пакет: flutter / src / painting _network_image_io.dart: неудачное утверждение: line22 pos14: 'url! = Null': неверно . См. Также: https://flutter.dev/docs/testing/errors

хотя выдает эту ошибку, если я нажимаю ctrl + s, он загружает страницу профиля. Это мой код.

 String profilePicUrl;
 @override
 void initState() {

super.initState();
FirebaseAuth.instance.currentUser().then((user){
  profilePicUrl=user.photoUrl;
}).catchError((e){
  print(e);
});

}, а затем я помещаю profilpicUrl внутрь networkImage следующим образом:

    Container(
                width: 150.0,
                height: 150.0,
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: NetworkImage(profilePicUrl),
                    fit: BoxFit.cover,
                  ),
                  borderRadius: BorderRadius.all(Radius.circular(75.0)),
                  boxShadow: [
                    BoxShadow(
                      blurRadius:7.0,
                      color:Colors.black
                      )
                      ]

                ),
              ),

Каждый раз, когда я запускаю приложение, мне нужно нажимать ctrl + s, чтобы предотвратить ошибку и загрузите страницу профиля

1 Ответ

0 голосов
/ 27 мая 2020

Изображение не загружается вовремя, сначала вызывается initState и вызывается метод build до получения изображения. Следовательно, вы можете использовать FutureBuilder:

Container(
        width: 150.0,
        height: 150.0,
        child: FutureBuilder(
          builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              return Image.network(profilePicUrl, fit: BoxFit.cover);
            } else if (snapshot.connectionState == ConnectionState.none) {
              return Text("No data");
            }
            return CircularProgressIndicator();
          },
          future: FirebaseAuth.instance.currentUser(),
        ),
      ),
...