在这个应用程序中,我试图获得基于听事件的查询。如果数据库中有任何变化,移动屏幕中的数据将发生变化。下面是从数据库获取数据的代码。
quizStart(){
FirebaseFirestore.instance.collection('quizes').doc(docId).get().then((value) {
length = value.data()['questions'].length;
});
ref = FirebaseFirestore.instance.collection('quizes').doc(docId).collection('sessions').doc(recId).snapshots().listen((event) {
var op = event.data();
print('getData: $length');
if(length == op['session']['index']){
print('length: $length op: ${op['session']['index']}');
showExitDialog('You have Completed the Quizi...');
}else
if(op['session']['active'] == false)
showExitDialog('The Quizi has been ended..');
else
if(op['session']['createdAt'] == null )
showDialog();
else {
Future.delayed(Duration(seconds: 3));
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => AnswersPage(
docId: docId, recId: recId, playerName: playerName)));
}
});
}
我使用Gridview构建器显示数据。
StreamBuilder(
stream: sessionQuery,
builder: (context,AsyncSnapshot<DocumentSnapshot> snapshot){
if(snapshot.hasError)
return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState){
case ConnectionState.waiting: return Text('Loading ...');
default: queIndex = snapshot.data['session']['index'];
return StreamBuilder(
stream: questionTypeQuery,
builder: (BuildContext context,AsyncSnapshot snap){
if(snap == null && snap.hasError)
return Text('Error: ${snap.error}');
switch (snap.connectionState){
case ConnectionState.waiting: return Text('Quizi! is Loading ... Please Wait');
default:
answerType = snap.data['questions'][queIndex]['answertype'].toString();
points = snap.data['questions'][queIndex]['points'].toString();
question =snap.data['questions'][queIndex]['question'].toString();
quesLength = snap.data['questions'][queIndex]['answers'].length;
return RubberBand(
key: gridAnim,
child: GridView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
itemCount: quesLength,
itemBuilder: (BuildContext context, int index){
return InkWell(
onTap: (){
showDialog('Look Out for the next question...');
},
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Material(
elevation: 5,
borderRadius: new BorderRadius.circular(20.0),
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.yellowAccent.withOpacity(0.5),
offset: const Offset(1.0, 1.0,), blurRadius: 5.0, spreadRadius: 0.5,),
BoxShadow(color: Colors.white,
offset: const Offset(0.0, 0.0), blurRadius: 0.0, spreadRadius: 0.0,), ],
border: Border.all(color: Colors.lightGreenAccent, width: 2.0, style: BorderStyle.solid),
color: Colors.deepPurple[500], borderRadius: new BorderRadius.circular(20.0),
),
child: Center(child:
Text(snap.data['questions'][queIndex]['answers'][index]['answer'].toString(),
style: GoogleFonts.bubblegumSans(color: Colors.white, fontSize: 25,))),
),
)
));
},
),
);
}
});
}}
),
我在上面代码的第9行中遇到错误。
即使quizStart()中的条件有效,我也会得到范围错误。
有人能帮我解决这个问题吗?
我只是用来显示第二个StreamBuilder。
(前)
If(condition)
return Widget
else
return StreamBuilder.
现在我得到了所需的输出。
我不知道这是解决这个错误的正确方法。但这对我很有效。
谢谢。
大家好,我是flutter初学者,在练习刷卡解雇选项时,我已经完成了下面提到的代码,删除了一些产品后,我收到了下面的错误,我试图解决这个问题,但不能,请给我提供您的宝贵建议。 下面我附上了代码和错误供您参考。 ======== 由小部件库捕获的异常 ======================================================= 抛出了以下RangeError构建:R
我一直在尝试在listview生成器的末尾添加一个按钮。我试着做这个问题中建议的事情:Flutter:如何在ListView的末尾添加一个按钮小部件。包含其他类型小部件的生成器?。但如果我这样做,我会得到:“RangeError(index):无效值:不在包含范围0..49:50中 我试图寻找问题,也有这个问题,但我找不到一个答案,解决它。
我在颤振中使用Swiper,错误发生在我在列表中添加4个元素时。 我引用了链接抖动错误:RangeError(索引):无效值:不在范围0内。。2,包含:3,但无法在Swiper中实现。
列出dataListWidget(AsyncSnapshot快照){return snapshot.data.docs[0].map((文档){return ListTile(标题:Text(文档[“Name]”),副标题:Text(文档[“City”]),;})。toList();} //我的streamBuilder StreamBuilder(流:firestore.collection('
我在颤振中使用了一个很长的列表。所有项目都呈现良好,但我也收到以下错误: 以下是我的代码: 下面是我的方法: 下面是我的方法: 以下是错误的屏幕截图:
问题内容: 我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员): 错误: app.js: 以下是我的edit.js路由,我认为是发生问题的地方: 问题答案: 我刚才有一个类似的错误消息,并设法通过更改解决了该问题: 至: 要不就: 也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。 这可能是问题所在,但看起来您不小心复制了代码