【发布时间】:2021-05-05 01:33:42
【问题描述】:
我想从数据库(CloudFirestore)中检索数据并将其显示在列表视图中。访问数据库工作正常,因为我能够登录。但是,登录后数据不会显示在列表视图上。我添加了错误消息和列表视图的代码。 如果有人可以提供帮助,不胜感激。
启动应用时出错
Launching lib\main.dart on sdk gphone x86 in debug mode...
Running Gradle task 'assembleDebug'...
√ Built build\app\outputs\flutter-apk\app-debug.apk.
Debug service listening on ws://127.0.0.1:64363/KVv5OZ9vh50=/ws
Syncing files to device sdk gphone x86...
D/skia ( 9851): Errors:
D/skia ( 9851):
D/skia ( 9851): Shader compilation error
D/skia ( 9851): ------------------------
D/skia ( 9851): Errors:
D/skia ( 9851):
W/IInputConnectionWrapper( 9851): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 9851): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 9851): getTextAfterCursor on inactive InputConnection
I/flutter ( 9851): Building login screen
I/flutter ( 9851): Building login screen
I/flutter ( 9851): Building login screen
W/System ( 9851): Ignoring header X-Firebase-Locale because its value was null.
W/System ( 9851): Ignoring header X-Firebase-Locale because its value was null.
D/FirebaseAuth( 9851): Notifying id token listeners about user ( zENUTXicQqOe4wPARJFTXO99kG63 ).
D/FirebaseAuth( 9851): Notifying auth state listeners about user ( zENUTXicQqOe4wPARJFTXO99kG63 ).
I/flutter ( 9851): Log In: FirebaseUser(Instance of 'PlatformUser')
I/flutter ( 9851): building Feed
W/DynamiteModule( 9851): Local module descriptor class for providerinstaller not found.
I/TetheringManager( 9851): registerTetheringEventCallback:com.example.pricelistapp
I/DynamiteModule( 9851): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller( 9851): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/le.pricelistap( 9851): The ClassLoaderContext is a special shared library.
I/le.pricelistap( 9851): The ClassLoaderContext is a special shared library.
V/NativeCrypto( 9851): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
W/le.pricelistap( 9851): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed)
I/ProviderInstaller( 9851): Installed default security provider GmsCore_OpenSSL
W/le.pricelistap( 9851): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (greylist, reflection, allowed)
W/le.pricelistap( 9851): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, linking, allowed)
W/le.pricelistap( 9851): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, linking, allowed)
W/le.pricelistap( 9851): Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (greylist, JNI, allowed)
W/le.pricelistap( 9851): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (greylist, reflection, allowed)
W/le.pricelistap( 9851): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (greylist,core-platform-api, linking, allowed)
W/le.pricelistap( 9851): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (greylist, linking, allowed)
I/flutter ( 9851): building Feed
W/le.pricelistap( 9851): Accessing hidden method Ldalvik/system/CloseGuard;->close()V (greylist,core-platform-api, linking, allowed)
依赖关系
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
//implementation 'com.google.firebase:firebase-database : 19.2.0'
implementation platform('com.google.firebase:firebase-bom:26.3.0')
implementation 'com.google.firebase:firebase-auth'
//implementation "androidx.multidex:multidex:2.0.0"
implementation 'com.google.firebase:firebase-dynamic-links'
implementation 'com.google.firebase:firebase-analytics'
}
列表视图:
getFoods(FoodNotifier foodNotifier) async {
QuerySnapshot snapshot = await Firestore.instance
.collection('Foods')
.orderBy("createdAt", descending: true)
.getDocuments();
List<Food> _foodList = [];
snapshot.documents.forEach((document) {
Food food = Food.fromMap(document.data);
_foodList.add(food);
});
foodNotifier.foodList = _foodList;
}
你能帮忙吗? 谢谢, 雷什米
【问题讨论】:
-
这不是 ChangeNotifier 处理列表的方式。您需要访问列表的值并使用 addAll 函数或使用 .value 函数。您正在尝试用 other 替换列表的一个实例,但这是行不通的。
-
@MarianoZorrilla 你有例子吗?
标签: java android flutter google-cloud-firestore cloud