Darüber hinaus ist der Pfadwert dynamisch. Wie können wir sicherstellen, dass der an ref.watch(uploadProvider(filePath)) und ref.read(uploadProvider(filePath).future) übergebene Dateipfad derselbe ist? Müssen wir eine Mitgliedsvariable definieren, um den Dateipfad aufzuzeichnen? Die Ausführungszeit von watch ist jedoch früher als die von read, und der zu unterschiedlichen Zeiten erhaltene Wert von filePath kann unterschiedlich sein.
Ich hoffe, Lösungen für das Problem im Szenario mit FutureProvider zu finden .autoDispose.family und einige detaillierte Anwendungsbeispiele. Vielen Dank für Ihre Hilfe.
Code: Select all
final uploadProvider =
FutureProvider.autoDispose.family((ref, filePath) async {
Logger.instance.d("import start:$filePath");
final cancelToken = MyCancelToken();
ref.onDispose(() {
// Logger.instance.d("upload cancel token onCancel");
// cancelToken.cancel();
});
final noteRepository = ref.watch(noteRepositoryProvider);
final retImport = await noteRepository.upload(filePath, cancelToken);
return retImport;
});
_handleUploadPressed() async {
var ret = await ref.read(uploadProvider(selectedFilePath).future);
}