В моем приложении флаттера я использую GridView с firebase. Получает значение от firebase.Записано получение значения из firebase в классе состояний initState.Я объявляю переменную document
.Я хочу узнать детали в createchildwidget()
.Но в createchildwidget()
показывает ноль.как получить dertails
в функции createchildwidget()
.Пожалуйста, помогите мне.
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
MyApp({this.firestore});
final Firestore firestore;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(title: 'My Shop', firestore: firestore)
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title, this.firestore}) : super(key: key);
final Firestore firestore;
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState(firestore: firestore);
}
class _MyHomePageState extends State<MyHomePage> {
_MyHomePageState({this.firestore});
final Firestore firestore;
var details = [];
void initState(){
super.initState();
Firestore.instance.collection("names").getDocuments().then((data) async{
var list = data.documents;
details = list;
print("init state document:"+details.length.toString()); // value is getting
setState((){
details = list;
});
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
iconTheme: IconThemeData(
color: Colors.black, //change font color here
),
backgroundColor: new Color(0xFFFAFAFA),
)
title:"title",
body: TheGridview().build(),
);
}
}
class GridviewClass extends _MyHomePageState{
Card addGridCell(String name, IconData icon){
return Card(
elevation: 1.0,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
verticalDirection: VerticalDirection.down,
children: <Widget>[
Center(child: Icon(icon)),
Text(name)
],
),
);
}
@override
Widget build(BuildContext context) {
return GridView.count(
primary: true,
padding: EdgeInsets.all(1.0),
crossAxisCount: 2,
childAspectRatio: 1.0,
mainAxisSpacing: 1.0,
crossAxisSpacing: 1.0,
children: createchildwidget(),
/* children: <Widget>[
addGridCell("Home", Icons.access_alarm)
],*/
);
}
List<Widget> createchildwidget(){
print("createchildwidget:"+details.length.toString()); // the value getting 0
List<Widget> createchildwidget = List<Widget>();
for(int i=0;i<details.length;i++){
createchildwidget.add(GridviewClass().addGridCell(details[i].data['message'], Icons.access_alarm));
}
return createchildwidget;
}
}