【发布时间】:2019-07-13 11:11:21
【问题描述】:
我正在尝试使用来自 firebase 应用程序的文本,每个文本的每个页面视图,但它给了我这个权限被拒绝的日志,我也尝试使用 FutureBuilder,但它给出了同样的错误。
我的错误日志:
W/Firestore(28023): (0.6.6-dev) [Firestore]: 监听查询(teste) 失败:状态{code=PERMISSION_DENIED,描述=缺失或 权限不足。,原因=null} I/System.out(28023): com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED:权限缺失或不足。 W / Firestore(28023):(0.6.6-dev)[Firestore]:侦听查询(课程)失败:状态{code = PERMISSION_DENIED, 描述=缺少权限或权限不足。,原因=null} I/System.out(28023): com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED:权限缺失或不足。
代码:
class LessonPage extends StatelessWidget {
final LessonData lessonData;
LessonPage(this.lessonData);
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection("lessons").snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text(
"An Has Error Occurred",
style: TextStyle(color: Colors.red, fontSize: 24.0),
),
);
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: CircularProgressIndicator(),
);
case ConnectionState.none:
{
return Center(
child: Text(
"Without Connection!",
style: TextStyle(color: Colors.red, fontSize: 24.0),
),
);
}
case ConnectionState.done:
case ConnectionState.active:
default:
return PageView.builder(
itemBuilder: (context, index) {
return LessonWidget(
LessonData.fromDocument(snapshot.data.documents[index]));
},
itemCount: snapshot.data.documents.length,
);
}
},
);
}
}
LessonWidget 类(我从 firebase 获取课程文本文档快照,并放入我的文本):
class LessonWidget extends StatelessWidget {
final LessonData lessonData;
LessonWidget(this.lessonData);
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
Text("${lessonData.text == null ? lessonData.text : "" }", style:
TextStyle(color: Colors.black54, fontSize: 30.0),),
SizedBox(height: 18.0,),
TextField(
decoration: InputDecoration(
hintText: "Escreva a sua resposta aqui"
),
autofocus: true,
),
SizedBox(height: 10.0,),
RaisedButton(onPressed: () {
},
color: Theme
.of(context)
.primaryColor,
child: Text("Continuar"),)
],
);
}
}
【问题讨论】:
-
这可能是您的数据库规则。您是否检查了 Firebase 控制台中的规则?也看看here。
-
我已经解决了,但现在我遇到了另一个问题:“getter text was called on null”。我使用代码 Text("${lessonData.text == null ? courseData.text : "" }"),
-
“getter text was called on null”是因为您的课程数据实例为空。避免 null 的一个好方法是使用 dart null-aware 运算符。你可以试试 Text( ${lessonData?.text ?? "Null courseData text" }" ); 看看 here 的 dart null 感知运算符。我希望它有所帮助。
-
我已经更改了文本条件并将其放在 PageView.builder 中的 FutureBuilder 中
-
@LíviaCastilholiSantiago 你能解决这个问题吗?如果是,那么如何?
标签: firebase flutter google-cloud-firestore