2

When I changed the deprecated ImagePicker package getImage to pickImage the future image builder didnt show the image again how can I solve this problem.

final picker = ImagePicker();
  late Future<PickedFile?> pickedFile = Future.value(null);


FutureBuilder<PickedFile?>(
                future: pickedFile,
                builder: (context, snap) {
                  if (snap.hasData) {
                    return Container(
                      child: Image.file(
                        File(snap.data!.path),
                        fit: BoxFit.contain,
                      ),
                      color: Colors.blue,
                    );
                  }
                  return Image.asset('images/img.png',height: 100,);
                },
              ),

  Future<void> GetImage() async {
    pickedFile = picker
        .getImage(source: ImageSource.gallery)
        .whenComplete(() => {setState(() {})});
  }

this is the alternative function that didint show an error but never viewed in the future builder.

      Future<void> GetImage() async {
  pickedFile = picker
        .pickImage(source: ImageSource.gallery,imageQuality: 50)
        .whenComplete(() => {setState(() {})}) as Future<PickedFile?>;
  }

and when I used getImage i get "The getter 'path' isn't defined for the type 'Future<PickedFile?>" when I try to use File(pickedImage!.path)

Bareq Raad
  • 71
  • 1
  • 8

1 Answers1

1

You can use it in this case as well:

class ImagePage extends StatefulWidget {
  const ImagePage({Key? key}) : super(key: key);

  @override
  State<ImagePage> createState() => _ImagePageState();
}

class _ImagePageState extends State<ImagePage> {
  Image image = Image.asset('images/img.png', height: 100,);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: image,
        color: Colors.blue,
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          final ImagePicker _picker = ImagePicker();
          final _image = await _picker.pickImage(
              source: ImageSource.gallery, imageQuality: 50);
          image = Image.file(File(_image.path));
          setState(() {});
        },