Есть ли способ загрузить изображение из пожарного магазина в флаттер? - PullRequest
0 голосов
/ 21 мая 2019

Я новичок, чтобы трепетать, поэтому я пытался загрузить изображение во флаттере, используя cachenetworkimage и firestore, но я не могу ... и вот мой код

Вот краткий обзор из магазина.

enter image description here

class _Home extends State<Home> {
  Future<RemoteConfig> remoteConfig() async => await RemoteConfig.instance;
   StreamSubscription<QuerySnapshot> subscription;
  List<DocumentSnapshot> wallpapersList;
  final CollectionReference collectionReference = Firestore.instance.collection("images").document('IQlIiQtlWaidilQKFw2Y') as CollectionReference;
   @override    
  void initState() {
    super.initState();
     subscription = collectionReference.snapshots().listen((datasnapshot) {
      setState(() {
    wallpapersList = datasnapshot.documents;
  });
});
}
List<Widget> ListMyWidgets() {
 List<Widget> list = new List();
 var wallpaperList;
  for(var i = 0; i< wallpaperList.length; i++){
    list.add(CachedNetworkImage(imageUrl: wallpaperList[i]['homescreen_bannersrc']));
 }
 return list;
}
  @override
  Widget build(BuildContext ctx) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          Expanded(
            child: SingleChildScrollView(
              child: Container(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: 
                  ListMyWidgets()
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

1 Ответ

0 голосов
/ 21 мая 2019

Во-первых, ваш виджет должен быть с состоянием, так как кажется, что вы ничего не используете для запоминания состояния.

Затем объявите следующее в вашем виджете:

 StreamSubscription<QuerySnapshot> subscription;
 List<DocumentSnapshot> wallpapersList;
 final CollectionReference collectionReference =
      Firestore.instance.collection("images");

В initState добавьте следующееcode:

subscription = collectionReference.snapshots().listen((datasnapshot) {
  setState(() {
    wallpapersList = datasnapshot.documents;
  });
});

Создайте сейчас список виджетов:

List<Widget> ListMyWidgets() {
 List<Widget> list = new List();
 for(var i = 0; i< wallpaperList.length; i++){
    list.add(CachedNetworkImage(imageUrl: wallpaperList[i]['homescreen_bannersrc']));
 }
 return list;
}

Теперь добавьте следующий код для метода сборки:

Column(
 crossAxisAlignment: CrossAxisAlignment.stretch,
 children: ListMyWidgets()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...