I simplified code for reproducing this error. It works with Android Emulator, but fails when getting collection data from Firestore, when running on Web.
Error Message:
Error: [cloud_firestore/unknown] Expected a value of type '((Object?) => Object)?', but got one of type '(Object) => Object?'
at Object.throw_ [as throw] (http://localhost:58066/dart_sdk.js:5028:11)
at collection_reference_web.CollectionReferenceWeb.new.get (http://localhost:58066/packages/cloud_firestore_web/src/write_batch_web.dart.lib.js:370:23)
at get.next (<anonymous>)
at http://localhost:58066/dart_sdk.js:37206:33
at _RootZone.runUnary (http://localhost:58066/dart_sdk.js:37077:59)
at _FutureListener.thenAwait.handleValue (http://localhost:58066/dart_sdk.js:32333:29)
at handleValueCallback (http://localhost:58066/dart_sdk.js:32860:49)
at Function._propagateToListeners (http://localhost:58066/dart_sdk.js:32898:17)
at _Future.new.[_completeWithValue] (http://localhost:58066/dart_sdk.js:32746:23)
at async._AsyncCallbackEntry.new.callback (http://localhost:58066/dart_sdk.js:32767:35)
at Object._microtaskLoop (http://localhost:58066/dart_sdk.js:37329:13)
at _startMicrotaskLoop (http://localhost:58066/dart_sdk.js:37335:13)
at http://localhost:58066/dart_sdk.js:33106:9
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, 1.26.0-17.6.pre, on Microsoft Windows [Version 10.0.18363.1379], locale ru-RU)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
[√] Chrome - develop for the web
[√] Android Studio (version 4.1.0)
[√] IntelliJ IDEA Ultimate Edition (version 2020.1)
[√] VS Code (version 1.53.2)
[√] Connected device (2 available)
main.dart: (MyApp() is just an empty page)
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';
List<String> departments = List.empty(growable: true);
void main() async{
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await FirebaseAuth.instance.signInWithEmailAndPassword(email: "user1@gmail.com", password: "111111");
CollectionReference departmentsRef = FirebaseFirestore.instance.collection("Departments");
QuerySnapshot qsDepartments = await departmentsRef.get(); //HERE I GET AN ERROR
qsDepartments.docs.forEach((element) {
Map<String, dynamic>? map = element.data();
print(map!['name']);
departments.add(map['name']);
});
runApp(MyApp());
}
web/index.html:
<!DOCTYPE html>
<html>
<head>
<base href="/">
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="A new Flutter application.">
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="test_web_firestore">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>test_web_firestore</title>
<link rel="manifest" href="manifest.json">
</head>
<body>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('flutter-first-frame', function () {
navigator.serviceWorker.register('flutter_service_worker.js');
});
}
</script>
<script src="main.dart.js" type="application/javascript"></script>
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/8.2.9/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.2.9/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.2.9/firebase-firestore.js"></script>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyA6BARqtxEwWAvYG9etXXz9iknq6PviJCU",
authDomain: "testwebfirestore.firebaseapp.com",
projectId: "testwebfirestore",
storageBucket: "testwebfirestore.appspot.com",
messagingSenderId: "604806481003",
appId: "1:604806481003:web:9fe9c74feaceb71ee91d2e"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
</body>
</html>
pubspec.yaml:
name: test_web_firestore
description: A new Flutter application.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.12.0-0 <3.0.0"
dependencies:
flutter:
sdk: flutter
firebase_core: ^0.8.0-1.0.nullsafety.1
firebase_auth: ^0.21.0-1.1.nullsafety.1
cloud_firestore: ^0.17.0-1.0.nullsafety.0
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
When running with flutter run --no-sound-null-safety i get another error:
Error: [cloud_firestore/unknown] NoSuchMethodError: invalid member on null: 'includeMetadataChanges'
at Object.throw_ [as throw] (http://localhost:62031/dart_sdk.js:5331:11)
at collection_reference_web.CollectionReferenceWeb.new.get (http://localhost:62031/packages/cloud_firestore_web/src/write_batch_web.dart.lib.js:370:23)
at get.next (<anonymous>)
at http://localhost:62031/dart_sdk.js:39029:33
at _RootZone.runUnary (http://localhost:62031/dart_sdk.js:38886:58)
at _FutureListener.thenAwait.handleValue (http://localhost:62031/dart_sdk.js:33872:29)
at handleValueCallback (http://localhost:62031/dart_sdk.js:34432:49)
at Function._propagateToListeners (http://localhost:62031/dart_sdk.js:34470:17)
at _Future.new.[_completeWithValue] (http://localhost:62031/dart_sdk.js:34312:23)
at async._AsyncCallbackEntry.new.callback (http://localhost:62031/dart_sdk.js:34335:35)
at Object._microtaskLoop (http://localhost:62031/dart_sdk.js:39173:13)
at _startMicrotaskLoop (http://localhost:62031/dart_sdk.js:39179:13)
at http://localhost:62031/dart_sdk.js:34686:9
Aucun commentaire:
Enregistrer un commentaire