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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 首次使用Firestore在StreamBuilder上获取数据_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase 首次使用Firestore在StreamBuilder上获取数据

Firebase 首次使用Firestore在StreamBuilder上获取数据,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我在颤振应用程序中获得了以下代码。我正在编写配方应用程序。每当我调试它时,第一次快照返回null。但第二次快照返回正确的数据。当我的“Malzemelerera”类运行时,“malzemeler”字段不获取数据并返回null异常 import 'package:flutter/material.dart'; import 'package:dropdownfield/dropdownfield.dart'; import 'package:tarifler/utilities/constants

我在颤振应用程序中获得了以下代码。我正在编写配方应用程序。每当我调试它时,第一次快照返回null。但第二次快照返回正确的数据。当我的“Malzemelerera”类运行时,“malzemeler”字段不获取数据并返回null异常

import 'package:flutter/material.dart';
import 'package:dropdownfield/dropdownfield.dart';
import 'package:tarifler/utilities/constants.dart';

class MalzemelerleAra extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _MalzemelerleAraState();
}

int _count = 0;

class _MalzemelerleAraState extends State {
  @override
  Widget build(BuildContext context) {
    List<Widget> extractedChildren = <Widget>[
      Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: <Widget>[
          GetMalzemeler(),
          FlatButton(
            color: Colors.green,
            onPressed: () => _changeListCount(true),
            child: Icon(Icons.add),
          ),
          FlatButton(
            color: Colors.red,
            onPressed: () => _changeListCount(false),
            child: Icon(Icons.remove),
          ),
        ],
      ),
      _malzemeAlani(),
    ];
    for (var i = 0; i < _count; ++i) {
      extractedChildren.add(_malzemeAlani());
    }

    return Container(
      child: ListView(
        children: extractedChildren,
      ),
    );
  }

  _malzemeAlani() {
    String malzeme_id;
    Constants constt = new Constants();
    List<String> malzemeler;
    if (constt.malzemeler == null) {
      malzemeler = ["example"];
    }
    else{
      malzemeler = constt.malzemeler;
    }
    return DropDownField(
      onValueChanged: (dynamic value) {
        malzeme_id = value;
      },
      value: malzeme_id,
      required: false,
      hintText: "Malzeme Seç",
      labelText: "Malzemeler",
      items: malzemeler,
    );
  }

  _changeListCount(bool value) {
    setState(() {
      if (value) {
        _count++;
      } else if (!value) {
        _count--;
      }
    });
  }
}
导入“包装:颤振/材料.省道”;
导入“package:dropdownfield/dropdownfield.dart”;
导入“package:tarifler/utilities/constants.dart”;
类Malzemelerera扩展了StatefulWidget{
@凌驾
State createState()=>\u malzemelererastate();
}
int _计数=0;
类(MalzemelereraState扩展状态){
@凌驾
小部件构建(构建上下文){
列表提取的子项=[
划船(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
GetMalzemeler(),
扁平按钮(
颜色:颜色。绿色,
按下时:()=>\u changeListCount(true),
子:图标(Icons.add),
),
扁平按钮(
颜色:颜色,红色,
按下时:()=>\u changeListCount(false),
子:图标(图标。删除),
),
],
),
_malzemeAlani(),
];
对于(变量i=0;i<\u计数;++i){
extractedChildren.add(_malzemeAlani());
}
返回容器(
子:ListView(
儿童:提取儿童,
),
);
}
_马尔泽梅拉尼(){
字符串malzeme_id;
常数constt=新常数();
罗列马尔泽梅勒;
if(const.malzemeler==null){
malzemeler=[“示例”];
}
否则{
马尔泽梅勒=常数马尔泽梅勒;
}
返回下拉字段(
onValueChanged:(动态值){
malzeme_id=值;
},
值:malzeme_id,
必填项:false,
hintText:“马尔泽姆·塞萨”,
标签文字:“Malzemeler”,
项目:马尔泽梅勒,
);
}
_changeListCount(布尔值){
设置状态(){
如果(值){
_计数++;
}如果(!值){
_计数--;
}
});
}
}
常数类:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class Constants {
  List<dynamic> malzemeler;
  DocumentReference reference;
  Constants (){}

  Constants.fromMap(Map<String, dynamic> map, {this.reference})
      : assert(map["malzemeler"] != null),
        malzemeler = map["malzemeler"];

  Constants.fromSnapshot(DocumentSnapshot snapshot)
      : this.fromMap(snapshot.data, reference: snapshot.reference);
}

class GetMalzemeler extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => GetMalzemelerState();
}

class GetMalzemelerState extends State {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: Firestore.instance.collection("malzemeler").snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return LinearProgressIndicator();
        } else {
          final getMalzemeler = Constants.fromSnapshot(snapshot.data.documents.elementAt(0));
          print(getMalzemeler.malzemeler);
          return Text("example");
        }
      },
    );

  }


}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
类常数{
罗列马尔泽梅勒;
文件参考;
常量(){}
常量.fromMap(映射映射,{this.reference})
:assert(映射[“malzemeler”]!=null),
malzemeler=map[“malzemeler”];
常量.fromSnapshot(DocumentSnapshot快照)
:this.fromMap(snapshot.data,reference:snapshot.reference);
}
类GetMalzemeler扩展StatefulWidget{
@凌驾
State createState()=>GetMalzemelerState();
}
类GetMalzemelerState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection(“malzemeler”).snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回LinearProgressIndicator();
}否则{
final getMalzemeler=Constants.fromSnapshot(snapshot.data.documents.elementAt(0));
打印(getMalzemeler.malzemeler);
返回文本(“示例”);
}
},
);
}
}
这是我的firebase数据库: 谢谢你的支持

当我尝试第一个答案时,我仍然犯这个错误

════════ Exception caught by widgets library ═══════════════════════════════════
The following NoSuchMethodError was thrown building StreamBuilder<QuerySnapshot>(dirty, state: _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#f5a3f):
The getter 'documents' was called on null.
Receiver: null
Tried calling: documents
User-created ancestor of the error-causing widget was
    GetMalzemeler 
lib\screens\malzemelerleAra.dart:19
When the exception was thrown, this was the stack
#0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:51:5)
#1      GetMalzemelerState.build.<anonymous closure> 
package:tarifler/utilities/constants.dart:28
#2      StreamBuilder.build 
package:flutter/…/widgets/async.dart:425
#3      _StreamBuilderBaseState.build 
package:flutter/…/widgets/async.dart:125
#4      StatefulElement.build 
package:flutter/…/widgets/framework.dart:4047
...
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by rendering library ═════════════════════════════════
A RenderFlex overflowed by 99765 pixels on the right.
User-created ancestor of the error-causing widget was
    ListView 
════════ widgets库捕获到异常═══════════════════════════════════
生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#f5a3f):
对null调用了getter“documents”。
收件人:空
尝试呼叫:文档
导致错误的小部件的用户创建的祖先为
格马尔泽梅勒
lib\screens\malzemelerera.dart:19
当抛出异常时,这是堆栈
#0 Object.noSuchMethod(省道:核心补片/对象补片。省道:51:5)
#1 GetMalzemelerState.build。
软件包:tarifler/utilities/constants.dart:28
#2.StreamBuilder.build
包:flatter/../widgets/async.dart:425
#3_StreamBuilderBaseState.build
包:flatter/../widgets/async.dart:125
#4 StatefulElement.build
包:flatter/../widgets/framework.dart:4047
...
════════════════════════════════════════════════════════════════════════════════
════════ 呈现库捕获到异常═════════════════════════════════
右侧的RenderFlex溢出99765像素。
导致错误的小部件的用户创建的祖先为
列表视图

尝试更换
!快照.hasData

if(snapshot.data.documents.length > 0) {
   final getMalzemeler = Constants.fromSnapshot(snapshot.data.documents.elementAt(0));
      print(getMalzemeler.malzemeler);
      return Text("example");
} else {
     return LinearProgressIndicator();
}

尝试替换
!快照.hasData

if(snapshot.data.documents.length > 0) {
   final getMalzemeler = Constants.fromSnapshot(snapshot.data.documents.elementAt(0));
      print(getMalzemeler.malzemeler);
      return Text("example");
} else {
     return LinearProgressIndicator();
}