Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何以列表的形式显示CloudFireStore中的数据,并将其传递到Flatter中的另一个文件_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase 如何以列表的形式显示CloudFireStore中的数据,并将其传递到Flatter中的另一个文件

Firebase 如何以列表的形式显示CloudFireStore中的数据,并将其传递到Flatter中的另一个文件,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我想从CloudFireStore中获取数据,并将其发送到另一个文件中 我正在使用streambuilder进行数据检索,但中的列表未全局初始化 class _DataState extends State<Data> { @override Widget build(BuildContext context) { return StreamBuilder( stream: Firestore.instance.collection('notific

我想从CloudFireStore中获取数据,并将其发送到另一个文件中

我正在使用streambuilder进行数据检索,但中的列表未全局初始化

  class _DataState extends State<Data> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
       stream: Firestore.instance.collection('notification').snapshots(),
        builder: (context, snapshot) {
          if(!snapshot.hasData){
            return new Container(
                          margin: const EdgeInsets.only(top: 25.0),
                          child: new Center(
                            child: new Text(
                              "loading Data Please wait...",
                              style: new TextStyle(
                                color: Colors.white
                              ),
                            ),
                          ),
                        );
          }
return ListView.builder(
            shrinkWrap: true,
           itemCount: snapshot.data.documents.length,
            itemBuilder: (BuildContext context, int index) {
            DocumentSnapshot ds = snapshot.data.documents[index];
      List<Book> books = [
      Book(ds['school_name'], ds['school_name'],'Rp 50.000', 'res/corel.jpg', 3.5, 123),
];
      }
);
        },
    );
  }
}
class\u数据状态扩展状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection('notification').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
退回新货柜(
边距:仅限常量边集(顶部:25.0),
孩子:新中心(
儿童:新文本(
“正在加载数据,请稍候…”,
样式:新文本样式(
颜色:颜色。白色
),
),
),
);
}
返回ListView.builder(
收缩膜:对,
itemCount:snapshot.data.documents.length,
itemBuilder:(构建上下文,int索引){
DocumentSnapshot ds=snapshot.data.documents[索引];
书目=[
书籍(ds['school_name',ds['school_name','Rp 50.000','res/corel.jpg',3.5123),
];
}
);
},
);
}
}
我想要接收数据的文件是

final grid = CustomScrollView(
  primary: false,
  slivers: <Widget>[
    SliverPadding(
      padding: EdgeInsets.all(16.0),
      sliver: SliverGrid.count(
        childAspectRatio: 2 / 3,
        crossAxisCount: 3,
        mainAxisSpacing: 20.0,
        crossAxisSpacing: 20.0,
        children: books.map((book) => createTile(book)).toList(),
      ),
    )
  ],
);
final grid=CustomScrollView(
主要:错误,
条子:[
填缝料(
填充:所有边缘设置(16.0),
sliver:SliverGrid.count(
儿童比例:2/3,
交叉轴计数:3,
主轴间距:20.0,
交叉轴间距:20.0,
子项:books.map((book)=>createTile(book)).toList(),
),
)
],
);
问题是如何在另一个文件中使用books数组,因为它是局部变量。有没有其他方法可以这样做。

我发现了一个类似的方法,您可以使用navigator将数据或对象传递给另一个类

在您的情况下,您可以像这样使用导航器:

class _DataState extends State<Data> {
    ........
    List<Book> books = [
      Book(ds['school_name'], ds['school_name'],'Rp 50.000', 'res/corel.jpg', 3.5, 123),];

    // Navigate to second screen with data
    Navigator.push(context, new MaterialPageRoute(builder: (context) => new 
    SecondScreenWithData(book: books)));                                          
   ...                                                                              
}
class\u数据状态扩展状态{
........
书目=[
书籍(ds['school_name',ds['school_name','Rp 50.000','res/corel.jpg',3.5123),];
//导航到包含数据的第二个屏幕
Navigator.push(上下文,newmaterialpageroute(builder:(上下文)=>new
第二屏带数据(书:书));
...                                                                              
}
二等

class SecondScreenWithData extends StatelessWidget {
   // Declare a field that holds the Books data
   final List<book> book;
   ......
   // In the constructor, require a Book
   SecondScreenWithData({Key key, @required this.book}) : super(key: key);
   ......
   // To display your books
   children: <Widget>[
   // Display passed data from first screen, you can run a for if you have more than a book
  new Text("Book Data  \nschool name: ${book[0][0]} \nprice: ${book[0][2]}")] 
   ......   
} 
class SecondScreenWithData扩展无状态小部件{
//声明保存图书数据的字段
最终清单册;
......
//在构造函数中,需要一本书
SecondScreenWithData({Key-Key,@required this.book}):super(Key:Key);
......
//展示你的书
儿童:[
//显示从第一个屏幕传递的数据,如果您有多本书,则可以运行for
新文本(“书籍数据\n学校名称:${Book[0][0]}\n价格:${Book[0][2]}”)]
......   
} 
您可以找到一个教程,它可以帮助您传递和共享数据