How do I feed an ImageProvider with an image object(Flutter)

2.6k Views Asked by At

I have this PhotoView from photo_view: ^0.10.3. I want to use the Image object to the PhotoView but it need an ImageProvider, I don't know how to do it. I know AssetsImage() can be feed but my image is not from the asset and I already made an Image object with the Image I want.

import 'package:photo_view/photo_view.dart';
import 'package:flutter/material.dart';



class PlaceSelectedImage extends StatefulWidget{
  final Image _image;
  PlaceSelectedImage(this._image);
  @override
  PlaceSelectedImageState createState() => PlaceSelectedImageState(_image);
}

class PlaceSelectedImageState extends State<PlaceSelectedImage>{
  final Image _image;
  PlaceSelectedImageState(this._image);
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
      child: PhotoView(
          imageProvider: _image
      ),
    );
  }

}
3

There are 3 best solutions below

0
On BEST ANSWER

If you want to use an image from the server you need to use NetworkImage class instead of using AssetImage.

You can't use Image, because it's a different widget by itself and it consumes Asset/NetworkImage.

0
On

I manage to work it out: I used FileImage() and, instead of passing an _image, I passed the file path.

1
On

If you need to provide the image which you are getting from another screen,

Try to use this code:

import 'package:photo_view/photo_view.dart';
import 'package:flutter/material.dart';

class PlaceSelectedImage extends StatefulWidget{
final Image _image;
PlaceSelectedImage(this._image);
@override
PlaceSelectedImageState createState() => PlaceSelectedImageState(_image);
}

class PlaceSelectedImageState extends State<PlaceSelectedImage>{

@override
 Widget build(BuildContext context) {
  // TODO: implement build
  return Center(
  child: PhotoView(
      imageProvider: widget._image
  ),
);
}
}