Estou adaptando as funções do curso para um projeto pessoal.
import 'dart:convert';
import 'dart:typed_data';
import 'package:get/get.dart';
import 'package:t2painel/app/data/models/image_model.dart';
import 'package:t2painel/app/data/models/produto.dart';
import 'package:image_picker/image_picker.dart';
import '../../functions/image_validator.dart';
import 'repository.dart';
class PhotosController extends GetxController {
final PhotosRepository repository;
int id = int.parse(Get.parameters['id']!);
PhotosController(this.repository);
final ImagePicker _picker = ImagePicker();
final produto = Rxn<ProdutoModel>();
List<ImageModel> images = RxList<ImageModel>.empty();
final loading = true.obs;
XFile? image;
void sendImage() async {
image = await _picker.pickImage(source: ImageSource.gallery);
if (validate(image!.name)) {
Uint8List imagebytes = await image!.readAsBytes();
String base64string = base64.encode(imagebytes);
ImageModel model = ImageModel(imagem: base64string, path: ' ');
await repository.postImage(id, model).then((data) {
fetchImages();
}, onError: (error) {
print(error);
});
} else {
Get.defaultDialog(
title: "Formato incorreto",
middleText: "Selecione imagens do formato 'jpeg'.");
}
}
Future<void> fetchImages() async {
await repository.getImagemLista(id).then((data) {
images.assignAll(data);
}, onError: (error) {
print(error);
});
}
Future<void> delete(String path) async {
await repository.deleteImage(path).then((data) {
fetchImages();
Get.defaultPopGesture;
Get.snackbar("Ok.", "Imagem deletada com sucesso!");
}, onError: (error) {
print(error);
});
}
Future<void> fetchProuct() async {
await repository.getProduto(id).then((data) {
produto.value = data;
}, onError: (error) {});
}
@override
void onInit() {
loading(true);
fetchProuct();
fetchImages();
loading(false);
super.onInit();
}
}