Если вы хотите:
- получить данные из пожарного магазина
- добавить в список
- создать listview.builder
Тогда Вы можете сделать следующее, сначала объявите следующие переменные в вашем State
классе:
class _MyHomePageState extends State<MyHomePage> {
bool isFirstTime = false;
List<DocumentSnapshot> datas = List<DocumentSnapshot>();
Затем создайте метод с именем getData()
, на который будет ссылаться в onPressed
:
floatingActionButton: FloatingActionButton(
onPressed: getData,
tooltip: 'Increment',
child: Icon(Icons.add),
),
getData() async {
if (!isFirstTime) {
QuerySnapshot snap =
await Firestore.instance.collection("insults").getDocuments();
isFirstTime = true;
setState(() {
datas.addAll(snap.documents);
});
}
}
Здесь, на прессе FAB, вы получите данные из коллекции insults
. Мы используем логическое значение, чтобы получить только один раз за клик. Внутри метода dispose
, который вы переопределяете:
@override
void dispose() {
super.dispose();
this.isFirstTime = false;
}
}
Вы можете назначить isFirstTime
на false
снова. Затем для отображения данных можно использовать свойство body
из AppBar
, назначить его виджету Center
, и виджет Center
будет содержать listview
:
body: Center(
// Center is a layout widget. It takes a single child and positions it
// in the middle of the parent.
child: ListView.builder(
itemCount: datas.length,
itemBuilder: (context, index) {
return ListTile(
title: Text('${datas[index]["index"]}'),
subtitle: Text('${datas[index]["title"]}'),
);
},
),
Использование listview.builder
, у вас будет список на экране, и вам не нужно будет использовать forEach
для итерации списка. Вам просто нужно использовать оператор get
[]
, чтобы получить данные внутри списка.