Flutter :[cloud_firestore/unknown] NoSuchMethodError: invalid member on null: 'includeMetadataChanges' (Flutter Web)
Flutter :[cloud_firestore/unknown] NoSuchMethodError: invalid member on null: 'includeMetadataChanges' (Flutter Web)
我正在尝试从 Friebase-firestore 获取数据,然后将其转换为模型,我对另一个项目(网络项目)使用了相同的代码和方法,它工作正常,但对于这个项目它不起作用,我不知道为什么。我升级了 flutter 版本 运行 Flutter doctor ,环境设置没有问题。
这是代码:
class dbService{
static final CollectionReference myCollection =
FirebaseFirestore.instance.collection('myCollection');
static Future<myModel> getMyInfo() async{
myModel sanaa ;
print('this line to print');
final QuerySnapshot myInfo =await myCollection.limit(1).get();
myInfo.docs.forEach((element) {
print(element.data()['name']);
sanaa= new myModel(
name:element.data()['name'].toString(),
title: element.data()["title"].toString(),
img: element.data()['img'].toString(),
);
print('\n print ------ ');
print(element.data()['name']);
print(' that is');
}
);
return sanaa;
}
}
class dbManager{
Stream<myModel> myInfoStream() async*{
yield await dbService.getMyInfo();
}
}
class _aboutStateState extends State<aboutState> {
Stream stream ;
dbManager mng = new dbManager();
@override
void initState() {
// TODO: implement initState
stream = mng.myInfoStream();
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.pink[300],
child: StreamBuilder<myModel>(
stream: stream,
builder: (context, snapshot){
if(snapshot.hasError){
print(snapshot.error);
return Center(child: Text('Something went wrong , please try again later'),);
}
else if(snapshot.hasData){
return Text("${snapshot.data.name}");
}
else {
return Center(child: CircularProgressIndicator());
}
},
),
我遇到了这个错误
this line to print
[cloud_firestore/unknown] NoSuchMethodError: invalid member on null: 'includeMetadataChanges'
但是当我直接连接到 firestore 而不将其转换为模型时,它工作正常并在屏幕上打印数据,代码:
child:FutureBuilder(
future: me.doc(id).get(),
builder: (context, snapshot){
if(snapshot.hasError){
print(snapshot.error);
return Center(child: Text('Something went wrong , please try again later'),);
}
else if(snapshot.hasData){
// print("${snapshot.data.data()['app_pics'][1]} \n${snapshot.data.data()['img']}");
return Text("${snapshot.data.data()['app_pics'][1]}");
}
else {
return Center(child: CircularProgressIndicator());
}
},
),
我运行扑博士
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, 1.24.0-10.2.pre, on Microsoft Windows [Version 6.3.9600], locale
en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Chrome - develop for the web
[√] Android Studio (version 4.0)
[√] VS Code (version 1.51.0)
[√] Connected device (3 available)
• No issues found!
拜托,我需要帮助
试试这个版本:
firebase_core: ^0.5.2
cloud_firestore: ^0.14.3
有关详细信息,请查看此 github Link
找到答案了,是Firebase JS SDK的版本问题。
我将 index.html 文件
中的 8.1.1 替换为 7.22.1
<!-- The core Firebase JS SDK is always required and must be listed first -->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-app.js"></script>-->
<!-- <!– TODO: Add SDKs for Firebase products that you want to use-->
<!-- https://firebase.google.com/docs/web/setup#available-libraries –>- ->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-firestore.js">
</script>-->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-analytics.js"></script>-->
我正在为 Firebase JS SDK
使用 7.22.1 版本
<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use
https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-analytics.js"></script>
您也可以使用此处提到的 8.0.1 并订阅该问题。一旦它被修复,你就会(希望)得到通知。
https://github.com/FirebaseExtended/flutterfire/issues/4127#issuecomment-754171740
我正在尝试从 Friebase-firestore 获取数据,然后将其转换为模型,我对另一个项目(网络项目)使用了相同的代码和方法,它工作正常,但对于这个项目它不起作用,我不知道为什么。我升级了 flutter 版本 运行 Flutter doctor ,环境设置没有问题。 这是代码:
class dbService{
static final CollectionReference myCollection =
FirebaseFirestore.instance.collection('myCollection');
static Future<myModel> getMyInfo() async{
myModel sanaa ;
print('this line to print');
final QuerySnapshot myInfo =await myCollection.limit(1).get();
myInfo.docs.forEach((element) {
print(element.data()['name']);
sanaa= new myModel(
name:element.data()['name'].toString(),
title: element.data()["title"].toString(),
img: element.data()['img'].toString(),
);
print('\n print ------ ');
print(element.data()['name']);
print(' that is');
}
);
return sanaa;
}
}
class dbManager{
Stream<myModel> myInfoStream() async*{
yield await dbService.getMyInfo();
}
}
class _aboutStateState extends State<aboutState> {
Stream stream ;
dbManager mng = new dbManager();
@override
void initState() {
// TODO: implement initState
stream = mng.myInfoStream();
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.pink[300],
child: StreamBuilder<myModel>(
stream: stream,
builder: (context, snapshot){
if(snapshot.hasError){
print(snapshot.error);
return Center(child: Text('Something went wrong , please try again later'),);
}
else if(snapshot.hasData){
return Text("${snapshot.data.name}");
}
else {
return Center(child: CircularProgressIndicator());
}
},
),
我遇到了这个错误
this line to print
[cloud_firestore/unknown] NoSuchMethodError: invalid member on null: 'includeMetadataChanges'
但是当我直接连接到 firestore 而不将其转换为模型时,它工作正常并在屏幕上打印数据,代码:
child:FutureBuilder(
future: me.doc(id).get(),
builder: (context, snapshot){
if(snapshot.hasError){
print(snapshot.error);
return Center(child: Text('Something went wrong , please try again later'),);
}
else if(snapshot.hasData){
// print("${snapshot.data.data()['app_pics'][1]} \n${snapshot.data.data()['img']}");
return Text("${snapshot.data.data()['app_pics'][1]}");
}
else {
return Center(child: CircularProgressIndicator());
}
},
),
我运行扑博士
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, 1.24.0-10.2.pre, on Microsoft Windows [Version 6.3.9600], locale
en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Chrome - develop for the web
[√] Android Studio (version 4.0)
[√] VS Code (version 1.51.0)
[√] Connected device (3 available)
• No issues found!
拜托,我需要帮助
试试这个版本:
firebase_core: ^0.5.2
cloud_firestore: ^0.14.3
有关详细信息,请查看此 github Link
找到答案了,是Firebase JS SDK的版本问题。 我将 index.html 文件
中的 8.1.1 替换为 7.22.1 <!-- The core Firebase JS SDK is always required and must be listed first -->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-app.js"></script>-->
<!-- <!– TODO: Add SDKs for Firebase products that you want to use-->
<!-- https://firebase.google.com/docs/web/setup#available-libraries –>- ->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-firestore.js">
</script>-->
<!-- <script src="https://www.gstatic.com/firebasejs/8.1.1/firebase-analytics.js"></script>-->
我正在为 Firebase JS SDK
使用 7.22.1 版本<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use
https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.22.1/firebase-analytics.js"></script>
您也可以使用此处提到的 8.0.1 并订阅该问题。一旦它被修复,你就会(希望)得到通知。
https://github.com/FirebaseExtended/flutterfire/issues/4127#issuecomment-754171740