PhotoViewGallery class

A StatefulWidget that shows multiple PhotoView widgets in a PageView

Some of PhotoView constructor options are passed direct to PhotoViewGallery cosntructor. Those options will affect the gallery in a whole.

Some of the options may be defined to each image individually, such as initialScale or heroAttributes. Those must be passed via each PhotoViewGalleryPageOptions.

Example of usage as a list of options:

PhotoViewGallery(
  pageOptions: <PhotoViewGalleryPageOptions>[
    PhotoViewGalleryPageOptions(
      imageProvider: AssetImage("assets/gallery1.jpg"),
      heroAttributes: const HeroAttributes(tag: "tag1"),
    ),
    PhotoViewGalleryPageOptions(
      imageProvider: AssetImage("assets/gallery2.jpg"),
      heroAttributes: const HeroAttributes(tag: "tag2"),
      maxScale: PhotoViewComputedScale.contained * 0.3
    ),
    PhotoViewGalleryPageOptions(
      imageProvider: AssetImage("assets/gallery3.jpg"),
      minScale: PhotoViewComputedScale.contained * 0.8,
      maxScale: PhotoViewComputedScale.covered * 1.1,
      heroAttributes: const HeroAttributes(tag: "tag3"),
    ),
  ],
  loadingBuilder: (context, progress) => Center(
           child: Container(
             width: 20.0,
             height: 20.0,
             child: CircularProgressIndicator(
               value: _progress == null
                   ? null
                   : _progress.cumulativeBytesLoaded /
                       _progress.expectedTotalBytes,
             ),
           ),
         ),
  backgroundDecoration: widget.backgroundDecoration,
  pageController: widget.pageController,
  onPageChanged: onPageChanged,
)

Example of usage with builder pattern:

PhotoViewGallery.builder(
  scrollPhysics: const BouncingScrollPhysics(),
  builder: (BuildContext context, int index) {
    return PhotoViewGalleryPageOptions(
      imageProvider: AssetImage(widget.galleryItems[index].image),
      initialScale: PhotoViewComputedScale.contained * 0.8,
      minScale: PhotoViewComputedScale.contained * 0.8,
      maxScale: PhotoViewComputedScale.covered * 1.1,
      heroAttributes: HeroAttributes(tag: galleryItems[index].id),
    );
  },
  itemCount: galleryItems.length,
  loadingBuilder: (context, progress) => Center(
           child: Container(
             width: 20.0,
             height: 20.0,
             child: CircularProgressIndicator(
               value: _progress == null
                   ? null
                   : _progress.cumulativeBytesLoaded /
                       _progress.expectedTotalBytes,
             ),
           ),
         ),
  backgroundDecoration: widget.backgroundDecoration,
  pageController: widget.pageController,
  onPageChanged: onPageChanged,
)
Inheritance

Constructors

PhotoViewGallery({Key key, @required List<PhotoViewGalleryPageOptions> pageOptions, @Deprecated("Use loadingBuilder instead") Widget loadingChild, LoadingBuilder loadingBuilder, Widget loadFailedChild, Decoration backgroundDecoration, bool gaplessPlayback: false, bool reverse: false, PageController pageController, PhotoViewGalleryPageChangedCallback onPageChanged, ValueChanged<PhotoViewScaleState> scaleStateChangedCallback, bool enableRotation: false, ScrollPhysics scrollPhysics, Axis scrollDirection: Axis.horizontal, Size customSize})
Construct a gallery with static items through a list of PhotoViewGalleryPageOptions.
const
PhotoViewGallery.builder({Key key, @required int itemCount, @required PhotoViewGalleryBuilder builder, @Deprecated("Use loadingBuilder instead") Widget loadingChild, LoadingBuilder loadingBuilder, Widget loadFailedChild, Decoration backgroundDecoration, bool gaplessPlayback: false, bool reverse: false, PageController pageController, PhotoViewGalleryPageChangedCallback onPageChanged, ValueChanged<PhotoViewScaleState> scaleStateChangedCallback, bool enableRotation: false, ScrollPhysics scrollPhysics, Axis scrollDirection: Axis.horizontal, Size customSize})
Construct a gallery with dynamic items. [...]
const

Properties

backgroundDecoration Decoration
Mirror to PhotoView.backgroundDecoration
final
builder PhotoViewGalleryBuilder
Called to build items for the gallery when using PhotoViewGallery.builder
final
customSize Size
Mirror to PhotoView.customSize
final
enableRotation bool
Mirror to PhotoView.enableRotation
final
gaplessPlayback bool
Mirror to PhotoView.gaplessPlayback
final
hashCode int
The hash code for this object. [...]
@nonVirtual, read-only, inherited
itemCount int
The count of items in the gallery, only used when constructed via PhotoViewGallery.builder
final
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
loadFailedChild Widget
Mirror to PhotoView.loadFailedChild
final
loadingBuilder LoadingBuilder
Mirror to PhotoView.loadingBuilder
final
loadingChild Widget
Mirror to PhotoView.loadingchild
final
onPageChanged PhotoViewGalleryPageChangedCallback
An callback to be called on a page change
final
pageController PageController
An object that controls the PageView inside PhotoViewGallery
final
pageOptions List<PhotoViewGalleryPageOptions>
A list of options to describe the items in the gallery
final
reverse bool
Mirror to PageView.reverse
final
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
scaleStateChangedCallback ValueChanged<PhotoViewScaleState>
Mirror to PhotoView.scaleStateChangedCallback
final
scrollDirection Axis
The axis along which the PageView scrolls. Mirror to PageView.scrollDirection
final
scrollPhysics ScrollPhysics
ScrollPhysics for the internal PageView
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree. [...]
inherited
createState() State<StatefulWidget>
Creates the mutable state for this widget at a given location in the tree. [...]
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toDiagnosticsNode({String name, DiagnosticsTreeStyle style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep. [...]
inherited
toString({DiagnosticLevel minLevel: DiagnosticLevel.info}) String
Returns a string representation of this object.
inherited
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants. [...]
inherited
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object. [...]
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator. [...]
@nonVirtual, inherited