При нажатии кнопки на странице А открывается страница выбора файла, где выбирается путь к файлу. Затем он возвращается на страницу A и получает путь к файлу. Путь необходимо загрузить на сервер. На странице во всплывающем сообщении отображается только статус загрузки. Если страница не отслеживает этот FutureProvider, он будет автоматически удален, что приведет к ошибке отмены пользователем и отмене загрузки. Как можно объединить FutureProvider с семейством для реализации логики загрузки?
Более того, значение пути является динамическим. Как мы можем гарантировать, что filePath, передаваемый в ref.watch(uploadProvider(filePath)) и ref.read(uploadProvider(filePath).future), один и тот же? Нужно ли нам определять переменную-член для записи пути к файлу? Однако время выполнения просмотра раньше, чем время чтения, и значение filePath, полученное в разное время, может быть разным.
надеемся получить решение проблемы в сценарии с участием FutureProvider .autoDispose.family и несколько подробных примеров использования. Спасибо за помощь.
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);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... pse-family