# #firebase #flutter #google-cloud-firestore #typeerror
Вопрос:
Это должно быть просто, но я занимаюсь этим уже несколько дней!
///StreamBuilder StreamBuilder( stream: farmacos.orderBy("nome", descending: false).snapshots(), builder: (context, AsyncSnapshotlt;QuerySnapshotgt; streamSnapshot) { if (!streamSnapshot.hasData) { return const Text("No data..."); } return ListView.builder( itemCount: streamSnapshot.data!.docs.length, itemBuilder: (context, index) =gt; GestureDetector( onTap: () {}, child: Card( color: Colors.amberAccent[100], child: Padding( padding: EdgeInsets.fromLTRB(_margem * .1, _margem * .1, _margem * .1, _margem * .1), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ///Get data from the stream Text(streamSnapshot.data!.docs[index]["nome"].toString()), //Ex: Paracetamol Text(streamSnapshot.data!.docs[index]["dose_ml_Kg"].toString(),), //Ex: 40 Text(streamSnapshot.data!.docs[index]["dose_max"].toString(),), //Ex: 1000 ], ), ), ), ) ); }, ),
Теперь я хочу выполнить операцию с данными, как это:
Text(streamSnapshot.data!.docs[index]["nome"].toString()), Text(streamSnapshot.data!.docs[index]["dose_ml_Kg"].toString(),), Text(streamSnapshot.data!.docs[index]["dose_max"].toString(),), _dose = streamSnapshot.data!.docs[index]["dose_ml_Kg"]*20, Text("$_dose"),
И ошибка в том, что:
тип «int» не является подтипом типа «Виджет»
Что случилось где?
Ответ №1:
Вы не можете объявить var внутри списка детей, что вам нужно сделать, это
streamSnapshot.data!.docs.length, itemBuilder: (context, index){ _dose = streamSnapshot.data!.docs[index]["dose_ml_Kg"]*20; return GestureDetector( onTap: () {} , child: Card( color: Colors.amberAccent[100], child: Padding( padding: EdgeInsets.fromLTRB(_margem * .1, _margem * .1, _margem * .1, _margem * .1), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ///Get data from the stream Text(streamSnapshot.data!.docs[index]["nome"].toString()), //Ex: Paracetamol Text(streamSnapshot.data!.docs[index]["dose_ml_Kg"].toString(),), //Ex: 40 Text(streamSnapshot.data!.docs[index]["dose_max"].toString(),), Text("$_dose"),//Ex: 1000 //Text("$_dose"), ], ), ), ), ); }, ); }, ),
Комментарии:
1. Здравствуйте, Артур Сикора. Большое спасибо за помощь. В этом месте [индекс] выдает ошибку! Может быть, потому, что его вызывают до того, как он объявлен. Как я могу это исправить?
2. О, моя вина, прости. Просто объявите _dose в разделе listview.builder непосредственно перед возвращением GestureDetector
3. Спасибо, Артур. Теперь это решило проблему. Заботиться.