0

enter image description here

This is the widget the error is pointing to

 Container(
                  height: 350,
                  child: GetBuilder<AddProductCtrl>(
                      id: imageContainer,
                      builder: (_) {
                        if (addProductCtrl.imageContainerList.length > 0 ) {
                          return Scrollbar(
                            isAlwaysShown: true,
                            controller: addProductCtrl.scrollController,
                            child: ListView.builder(
                                scrollDirection: Axis.horizontal,
                                itemCount: addProductCtrl
                                    .imageContainerList.length,
                                itemBuilder: (_, index) {
                                  return addProductCtrl
                                      .imageContainerList[index];
                                }),
                          );
                        } else {
                          return Center(
                            child:
                                Text('Add photos for your product'),
                          );
                        }
                      })
                ),

This is the getx controller class which I am using. Can someone please point out the error The error happens when I add some images and go back and then reenter into the page having the widget . Even if I don't upload any images it throws out this null error .

   import 'dart:io';

import 'package:clothy/constants/string_constants.dart';
import 'package:clothy/model/product_model.dart';
import 'package:clothy/pagesforadmin/add_product/pages/upload_image.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:logger/logger.dart';
import 'package:uuid/uuid.dart';
import 'package:image_picker/image_picker.dart';
import 'package:firebase_storage/firebase_storage.dart' as firebase_storage;

//Always remember to upload to local list and then finally send the stuff to the net;
class AddProductCtrl extends GetxController {
  ScrollController scrollController = ScrollController();
  firebase_storage.FirebaseStorage storage =
      firebase_storage.FirebaseStorage.instance;
  ProductModel product =
      ProductModel(sizes: [], photoUrl: [], price: [], quantity: []);
  TextEditingController? sizeCtrl = TextEditingController();
  TextEditingController? qtyCtrl = TextEditingController();
  TextEditingController? priceCtrl = TextEditingController();
  List<ImageContainer> imageContainerList = [];
  List<File> imageList = [];
  var logger = Logger();
  bool isUploading = false;



  addImages() {
     if (imageContainerList.length >= 5) {
      Get.snackbar(
          "limt exceedd","exceedd");
      return;
    }
    imageContainerList.add(ImageContainer(
      file: file,
    ));
    imageList.add(file!);
    // product.photoUrl!.add("s");
    update([imageContainer]);
    clearImage();
  }

  removeOneImageContainer() {
    if (imageContainerList.length > 0) {
      imageContainerList.removeLast();
      update([imageContainer]);
    }
  }



  handleTakePhoto() async {
    Get.back();
    final uploadedFile = await ImagePicker().getImage(
        source: ImageSource.camera,
        maxHeight: 675,
        maxWidth: 960,
        imageQuality: 85);
    if (uploadedFile != null) {
      file = File(uploadedFile.path);
      addImages();
    }
  }

  handleChooseFromGallery() async {
    Get.back();
    final uploadedFile = await ImagePicker()
        .getImage(source: ImageSource.gallery, imageQuality: 85);
    if (uploadedFile != null) {
      file = File(uploadedFile.path);
      addImages();
    }
  }

  selectImage(parentContext) {
    return showDialog(
        context: parentContext,
        builder: (context) {
          return SimpleDialog(
            title: Text('Upload Image'),
            children: <Widget>[
              SimpleDialogOption(
                child: Text('Camera'),
                onPressed: () => handleTakePhoto(),
              ),
              SimpleDialogOption(
                child: Text('Gallery'),
                onPressed: () => handleChooseFromGallery(),
              ),
              SimpleDialogOption(
                child: Text('Cancel'),
                onPressed: () => Get.back(),
              )
            ],
          );
        });
  }
}

0 Answers0