Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 NoSuchMethodError:在null上调用了getter数据,接收方:null_Firebase_Flutter_Dart_Firebase Storage - Fatal编程技术网

Firebase NoSuchMethodError:在null上调用了getter数据,接收方:null

Firebase NoSuchMethodError:在null上调用了getter数据,接收方:null,firebase,flutter,dart,firebase-storage,Firebase,Flutter,Dart,Firebase Storage,我试图创建一个详细屏幕来显示数据库中的Firebase数据,并显示图像以及一些文本数据,包括项目数量、日期和地理位置。有没有办法确定数据返回null的原因?导航器应该导航到DetailPage 这是我的主要文件- import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:wasteagram/pages/create_waste.da

我试图创建一个详细屏幕来显示数据库中的Firebase数据,并显示图像以及一些文本数据,包括项目数量、日期和地理位置。有没有办法确定数据返回null的原因?导航器应该导航到DetailPage

这是我的主要文件-

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:wasteagram/pages/create_waste.dart';
import 'package:wasteagram/services/crud.dart';
import 'pages/create_waste.dart';
import 'pages/detail_screen.dart'; 


void main() => runApp(new MyApp()); 

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Wasteagram - ', 
      theme: new ThemeData(
        primarySwatch: Colors.deepOrange, 
      ), 
      home: new MyHomePage(title: 'Wasteagram - '), 
    ); 
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key); 

  final String title; 
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  CrudMethods crudMethods = new CrudMethods(); 

  Stream wasteStream; 

  Widget WasteList() {
    return Container(
      child: wasteStream != null ? Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
        StreamBuilder(
          stream: wasteStream, 
          builder: (context, snapshot) {
            return ListView.builder(
              padding: EdgeInsets.symmetric(horizontal: 16), 
              itemCount: snapshot.data.documents.length,
              shrinkWrap: true,
              itemBuilder: (context, index){
                return WidgetTile(
                  wastedate: 
                    snapshot.data.documents[index].data['wastedate'],
                  wastenumber: 
                    snapshot.data.documents[index].data['wastenumber']
              ); 
            }); 
           },)
          ], 
        ) : Container(
            alignment: Alignment.center,
            child: CircularProgressIndicator(),
        ), 
    ); 
  }

  void initState() {
    super.initState(); 
    crudMethods.getData().then((result) {
      wasteStream = result; 
    }); 

  }


  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title), 
      ), 
      body: WasteList(), 
      floatingActionButton: new FloatingActionButton(
        onPressed: () {
         Navigator.push(
           context, 
           MaterialPageRoute(builder: (context) => CameraScreen())
         ); 
        },  
        child: new Icon(Icons.add), 
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
    ); 
  }
}

class WidgetTile extends StatelessWidget {
  String wastedate, wastenumber;
  WidgetTile({@required this.wastedate, @required this.wastenumber}); 

  @override
  Widget build(BuildContext context) {
    return ListTile(
        title: Text(wastedate), 
        trailing: Text(wastenumber),
        onTap: () {
          Navigator.push(
            context, 
            MaterialPageRoute(builder: (context) => DetailPage())
          ); 
        }
    ); 
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
导入“package:wasteagram/pages/create_waste.dart”;
导入“包装:wasteagram/services/crud.dart”;
导入“页面/创建_waste.dart”;
导入“页面/详细信息_screen.dart”;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
标题:“废弃地”,
主题:新主题数据(
primarySwatch:颜色。深橙色,
), 
主页:我的新主页(标题:“Wasteagram-”),
); 
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
CrudMethods CrudMethods=新的CrudMethods();
废物流;
小部件废弃列表(){
返回容器(
子级:废物流!=null?列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
StreamBuilder(
溪流:废溪流,
生成器:(上下文,快照){
返回ListView.builder(
填充:边缘组。对称(水平:16),
itemCount:snapshot.data.documents.length,
收缩膜:对,
itemBuilder:(上下文,索引){
返回WidgetTile(
废弃日期:
snapshot.data.documents[index].data['wastedate'],
废物编号:
snapshot.data.documents[index].data['wastenumber']
); 
}); 
},)
], 
):容器(
对齐:对齐.center,
子对象:CircularProgressIndicator(),
), 
); 
}
void initState(){
super.initState();
crudMethods.getData().then((结果){
废物流=结果;
}); 
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(widget.title),
), 
正文:废物清单(),
floatingActionButton:新的floatingActionButton(
已按下:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>CameraScreen()
); 
},  
子:新图标(Icons.add),
),
浮动ActionButtonLocation:浮动ActionButtonLocation.centerFloat,
); 
}
}
类WidgetTile扩展了无状态小部件{
字符串wastedate,wastenumber;
WidgetTile({@required this.wastedate,@required this.wastenumber});
@凌驾
小部件构建(构建上下文){
返回列表块(
标题:文本(废弃日期),
尾随:文本(编号),
onTap:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>DetailPage()
); 
}
); 
}
}
这是我的详细资料

import 'package:flutter/material.dart'; 
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:wasteagram/data/firestore_service.dart';



class DetailPage extends StatefulWidget {

  final DocumentSnapshot post; 

  DetailPage({this.post}); 

  @override
  _DetailPageState createState() => _DetailPageState();
}

class _DetailPageState extends State<DetailPage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.post.data["wastedate"])
      ), 
      body: Center(
        child: Container( 
          child: Column(
            children: <Widget> [
              Image.network(widget.post.data["image"]),
              Text(widget.post.data["wastedate"]), 
              Text(widget.post.data["wastenumber"]), 
              Text(widget.post.data["wastelocation"].toString()),
            ]
          )
        )
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:cloud_firestore/cloud_firestore.dart”;
导入“包:wasteagram/data/firestore_service.dart”;
类DetailPage扩展StatefulWidget{
最后文件快照后;
DetailPage({this.post});
@凌驾
_DetailPageState createState()=>\u DetailPageState();
}
类_DetailPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.post.data[“wastedate”])
), 
正文:中(
儿童:货柜(
子:列(
儿童:[
Image.network(widget.post.data[“Image”]),
文本(widget.post.data[“wastedate”]),
文本(widget.post.data[“wastenumber”]),
文本(widget.post.data[“wastelocation”].toString()),
]
)
)
),
);
}
}

您没有将DocumentSnapshot传递到详细信息页面。 试试这个:

Widget WasteList() {
    return Container(
      child: wasteStream != null ? Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
        StreamBuilder(
          stream: wasteStream, 
          builder: (context, snapshot) {
            return ListView.builder(
              padding: EdgeInsets.symmetric(horizontal: 16), 
              itemCount: snapshot.data.documents.length,
              shrinkWrap: true,
              itemBuilder: (context, index){
                return WidgetTile(
                  wastedate: 
                    snapshot.data.documents[index].data['wastedate'],
                  wastenumber: 
                    snapshot.data.documents[index].data['wastenumber'],
                   post:
                    snapshot.data.documents[index]
              ); 
            }); 
           },)
          ], 
        ) : Container(
            alignment: Alignment.center,
            child: CircularProgressIndicator(),
        ), 
    ); 
  }


class WidgetTile extends StatelessWidget {
  String wastedate, wastenumber;
  DocumentSnapshot post;
  WidgetTile({@required this.wastedate, @required this.wastenumber,@required this.post}); 

  @override
  Widget build(BuildContext context) {
    return ListTile(
        title: Text(wastedate), 
        trailing: Text(wastenumber),
        onTap: () {
          Navigator.push(
            context, 
            MaterialPageRoute(builder: (context) => DetailPage(post: post))
          ); 
        }
    ); 
  }
}
Widget废物清单(){
返回容器(
子级:废物流!=null?列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
StreamBuilder(
溪流:废溪流,
生成器:(上下文,快照){
返回ListView.builder(
填充:边缘组。对称(水平:16),
itemCount:snapshot.data.documents.length,
收缩膜:对,
itemBuilder:(上下文,索引){
返回WidgetTile(
废弃日期:
snapshot.data.documents[index].data['wastedate'],
废物编号:
snapshot.data.documents[index].data['wastenumber'],
职位:
快照.数据.文档[索引]
); 
}); 
},)
], 
):容器(
对齐:对齐.center,
子对象:CircularProgressIndicator(),
), 
); 
}
类WidgetTile扩展了无状态小部件{
字符串wastedate,wastenumber;
文档快照帖子;
WidgetTile({@required this.wastedate,@required this.wastenumber,@required this.post});
@凌驾
小部件构建(构建上下文){
返回列表块(
标题:文本(废弃日期),
尾随:文本(编号),
onTap:(){
导航器。推(
上下文
MaterialPageRoute(生成器:(上下文)=>DetailPage(post:post))
); 
}
); 
}
}