Untitled

mail@pastecode.io avatar
unknown
dart
2 years ago
2.1 kB
1
Indexable
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();
  }


}