1

我有这个来自 photo_view 的 PhotoView:^0.10.3。我想将 Image 对象用于 PhotoView 但它需要一个 ImageProvider,我不知道该怎么做。我知道 AssetsImage() 可以提供,但我的图像不是来自资产,我已经用我想要的图像制作了一个 Image 对象。

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
      ),
    );
  }

}
4

3 回答 3

2

如果要使用来自服务器的图像,则需要使用NetworkImage类而不是 AssetImage。

你不能使用 Image,因为它本身就是一个不同的小部件,它消耗 Asset/NetworkImage。

于 2020-12-17T11:36:56.387 回答
1

如果您需要提供从另一个屏幕获取的图像,

尝试使用此代码:

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
  ),
);
}
}
于 2020-12-17T11:40:36.403 回答
0

我设法解决了这个问题:我使用了FileImage(),而不是传递一个_image,我传递了文件路径。

于 2020-12-17T11:38:11.170 回答