[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9270":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},9270,"photo_view","bluefireteam\u002Fphoto_view","bluefireteam","📸 Easy to use yet very customizable zoomable image widget for Flutter, Photo View provides a gesture sensitive zoomable widget. Photo View is largely used to show interacive images and other stuff such as SVG.","",null,"Dart",1996,583,15,104,0,4,56.7,"MIT License",false,"main",true,[24,25,26,27,28,29,30,31,32,33,34],"flutter","gallery","hacktoberfest","images","photos","photoview","pinch-to-zoom","rotate","widget","zoom","zoomable","2026-06-12 04:00:43","# Flutter Photo View \n\n[![Tests status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fbluefireteam\u002Fphoto_view\u002Fci.yml?branch=master)](https:\u002F\u002Fgithub.com\u002Fbluefireteam\u002Fphoto_view\u002Factions) [![Pub](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fphoto_view.svg?style=popout)](https:\u002F\u002Fpub.dartlang.org\u002Fpackages\u002Fphoto_view) [![Chat](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F509714518008528896)](https:\u002F\u002Fdiscord.gg\u002FpxrBmy4)\n\nA simple zoomable image\u002Fcontent widget for Flutter.\n\nPhotoView enables images to become able to zoom and pan with user gestures such as pinch, rotate and drag.\n\nIt also can show any widget instead of an image, such as Container, Text or a SVG. \n\nEven though being super simple to use, PhotoView is extremely customizable though its options and the controllers. \n\n\n## Installation\n\nAdd `photo_view` as a dependency in your pubspec.yaml file.\n\nImport Photo View:\n```dart\nimport 'package:photo_view\u002Fphoto_view.dart';\n```\n\n## Docs & API\n\nThe [API Docs](https:\u002F\u002Fpub.dartlang.org\u002Fdocumentation\u002Fphoto_view\u002Flatest\u002Fphoto_view\u002Fphoto_view-library.html) some detailed information about how to use PhotoView.\n\n\nIf you want to see it in practice, check the [example app](https:\u002F\u002Fgithub.com\u002Fbluefireteam\u002Fphoto_view\u002Ftree\u002Fmaster\u002Fexample\u002Flib) that explores most of Photo View's use cases or download the latest version apk on the [releases page](https:\u002F\u002Fgithub.com\u002Fbluefireteam\u002Fphoto_view\u002Freleases)\n \n\n## (Very) Basic usage\n\nGiven a `ImageProvider imageProvider` (such as [AssetImage](https:\u002F\u002Fdocs.flutter.io\u002Fflutter\u002Fpainting\u002FAssetImage-class.html) or [NetworkImage](https:\u002F\u002Fdocs.flutter.io\u002Fflutter\u002Fpainting\u002FNetworkImage-class.html)):\n\n```dart\n@override\nWidget build(BuildContext context) {\n  return Container(\n    child: PhotoView(\n      imageProvider: AssetImage(\"assets\u002Flarge-image.jpg\"),\n    )\n  );\n}\n```\n\nResult: \n\n![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56463745-45ec0380-63b0-11e9-8e56-0dba5deabb1a.gif)\n\n\nRead more about the `PhotoView` widget [here](https:\u002F\u002Fpub.dartlang.org\u002Fdocumentation\u002Fphoto_view\u002Flatest\u002Fphoto_view\u002FPhotoView-class.html).\n\n\n## Gallery\n\nTo show several images and let user change between them, use `PhotoViewGallery`.\n\nRead more about the gallery [here](https:\u002F\u002Fpub.dartlang.org\u002Fdocumentation\u002Fphoto_view\u002Flatest\u002Fphoto_view_gallery\u002FPhotoViewGallery-class.html).\n\n```dart\nimport 'package:photo_view\u002Fphoto_view.dart';\nimport 'package:photo_view\u002Fphoto_view_gallery.dart';\n\u002F\u002F ...\n\n\n@override\nWidget build(BuildContext context) {\n  return Container(\n    child: PhotoViewGallery.builder(\n      scrollPhysics: const BouncingScrollPhysics(),\n      builder: (BuildContext context, int index) {\n        return PhotoViewGalleryPageOptions(\n          imageProvider: AssetImage(widget.galleryItems[index].image),\n          initialScale: PhotoViewComputedScale.contained * 0.8,\n          heroAttributes: PhotoViewHeroAttributes(tag: galleryItems[index].id),\n        );\n      },\n      itemCount: galleryItems.length,\n      loadingBuilder: (context, event) => Center(\n        child: Container(\n          width: 20.0,\n          height: 20.0,\n          child: CircularProgressIndicator(\n            value: event == null\n                ? 0\n                : event.cumulativeBytesLoaded \u002F event.expectedTotalBytes,\n          ),\n        ),\n      ),\n      backgroundDecoration: widget.backgroundDecoration,\n      pageController: widget.pageController,\n      onPageChanged: onPageChanged,\n    )\n  );\n}\n```\n\nGallery sample in the example app: \n\n![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56463769-e93d1880-63b0-11e9-8586-55827c95b89c.gif)\n\nSee the code [here](https:\u002F\u002Fgithub.com\u002Fbluefireteam\u002Fphoto_view\u002Fblob\u002Fmaster\u002Fexample\u002Flib\u002Fscreens\u002Fexamples\u002Fgallery\u002Fgallery_example.dart).\n\n\n\n## Usage with controllers\n\nWhen you need to interact with PhotoView's internal state values, `PhotoViewController` and `PhotoViewScaleStateController` are the way to.\n\nControllers, when specified to PhotoView widget, enables the author(you) to listen for state updates through a `Stream` and change those values externally.\n\nRead more about controllers [here](https:\u002F\u002Fpub.dartlang.org\u002Fdocumentation\u002Fphoto_view\u002Flatest\u002Fphoto_view\u002FPhotoView-class.html#controllers).\n\nIn the example app, we can see what can be achieved with controllers: \n\n![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464051-3328fd00-63b7-11e9-9c4d-73b04f72a81e.gif)\n\n### More screenshots\n\n\n| **Custom background, \u003Cbr>small image \u003Cbr>and custom alignment** | **Limited scale** | **Hero animation** |\n| ------------- | ------------- | ------------- |\n| ![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464128-ff4ed700-63b8-11e9-802e-a933b3e79ea3.gif) | ![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464182-23f77e80-63ba-11e9-87a9-4838ef20af7e.gif) | ![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464202-9700f500-63ba-11e9-9f47-14e8bf441958.gif) |\n| **Part of the screen** | **Custom child** |\n| ![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464215-d92a3680-63ba-11e9-9c37-d4796e992123.gif) | ![In action](https:\u002F\u002Fuser-images.githubusercontent.com\u002F6718144\u002F56464225-1b537800-63bb-11e9-9c5b-ea8632c99969.gif) |\n\n## Support us\n\nYou can support us by becoming a patron on Patreon, any support is much appreciated.\n\n[![Patreon](https:\u002F\u002Fc5.patreon.com\u002Fexternal\u002Flogo\u002Fbecome_a_patron_button.png)](https:\u002F\u002Fwww.patreon.com\u002Ffireslime)\n\n\n","PhotoView 是一个适用于 Flutter 的可缩放图像组件，支持手势操作如捏合缩放、旋转和拖动。该项目的核心功能包括对图片及其它内容（如 SVG）的交互展示，通过简单的配置即可实现丰富的自定义效果。此外，它还提供了 PhotoViewGallery 用于多图浏览场景。基于 Dart 语言开发，并采用 MIT 许可证开放源代码。非常适合需要在移动应用中添加图片查看或互动体验的开发者使用，无论是个人项目还是企业级应用都能轻松集成。",2,"2026-06-11 03:21:58","top_language"]