每当我想在 Firestore 中制作文件时,它不会让我这样做,我认为这是我用 Riverpod 和钩子所做的事情,代码如下:
onPressed: () async {
currentOrganization.when(
data: (organization) async {
_post.value = _post.value
.copyWith(creator: organization);
print(_post.value);
String imageid = uuid.v4();
pickedImage = await ImagePicker()
.getImage(
source: ImageSource.gallery,
maxWidth: 1920,
maxHeight: 1200,
imageQuality: 80);
Reference reference = FirebaseStorage
.instance
.ref()
.child("$imageid");
UploadTask uploadTask = reference
.putFile(File(pickedImage.path));
await uploadTask.then((res) async {
imageUrl = await reference
.getDownloadURL();
});
_post.value = _post.value
.copyWith(picture: imageUrl);
},
loading: () =>
const CircularProgressIndicator(),
error: (error, stack) => Center(
child: Text("$error"),
));
},
),
),
GestureDetector(
onTap: () async {
context
.read(createPostUSeCaseProvider)
.execute(CreatePostUseCaseInput(
uuid.v4(),
_post.value.description,
_post.value.title,
_post.value.creator,
_post.value.likes,_post.value.picture))
.then(
(result) => result.fold(
(failure) {
print('FAILURE: $failure');
toast("Please try again");
},
(unit) {
toast(" successfully");
},
),
);
},
当我删除currentOrganizationProvider一切都像魅力一样
这是用
例
import 'package:dartz/dartz.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:takaful/application/core/use_cases/i.use_case.dart';
import 'package:takaful/application/post/use_case/create_post/create_post.input.dart';
import 'package:takaful/application/providers/post.repository.provider.dart';
import 'package:takaful/domain/core/i.failure.dart';
import 'package:takaful/domain/model/post.dart';
import 'package:takaful/domain/post/i.post.repository.dart';
final createPostUSeCaseProvider = Provider((ref) =>
CreatePostUseCase(postRepository: ref.watch(postRepositoryProvider)));
class CreatePostUseCase implements IUseCase<CreatePostUseCaseInput, Unit> {
final IPostRepository _postRepository;
CreatePostUseCase({IPostRepository postRepository})
: _postRepository = postRepository;
@override
Future<Either<IFailure, Unit>> execute(input) async {
return await _postRepository.createPost(
description: input.discreption,
model: input.model,
id: input.id,
title: input.title,
likes: input.likes,
picture: input.picture);
}
}
和 基础设施代码:
Future<Either<UserFailures, Unit>> createPost({String id, String title, String description, OrganizationModel model, int likes,String picture}) async{
try {
await _firestore.collection(collection).doc().set({
"id":id,
"title":title,
"description":description,
"creator":model,
"likes":likes,
"picture":picture
});
return right(unit);
} catch (error) {
return left(UserFailures.serverError());
}
}
当我删除提供者时,一切正常,任何想法,我需要模型!