标签:index GridView 展示 int PhotoPreview photoList context initialIndex Flutter
排版为9宫格,可放大
参考:https://22v.net/article/3246/
封装组件:
//PhotoPreview 点击小图后的效果 class PhotoPreview extends StatefulWidget { final int initialIndex; final List<String> photoList; final PageController pageController; PhotoPreview({this.initialIndex, this.photoList}) : pageController = PageController(initialPage: initialIndex); @override _PhotoPreviewState createState() => _PhotoPreviewState(); } class _PhotoPreviewState extends State<PhotoPreview> { int currentIndex; @override void initState() { currentIndex = widget.initialIndex; super.initState(); } //图片切换 void onPageChanged(int index) { setState(() { currentIndex = index; }); } @override Widget build(BuildContext context) { return Container( child: PhotoViewGallery.builder( scrollPhysics: const BouncingScrollPhysics(), onPageChanged: onPageChanged, itemCount: widget.photoList.length, pageController: widget.pageController, builder: (BuildContext context, int index) { return PhotoViewGalleryPageOptions( imageProvider: AssetImage(widget.photoList[index]), minScale: PhotoViewComputedScale.contained * 0.6, maxScale: PhotoViewComputedScale.covered * 1.1, initialScale: PhotoViewComputedScale.contained, ); }, ), ); } }
引用:
Container( margin: EdgeInsets.only(left: 10, right: 10, bottom: 10), child: GridView.builder( shrinkWrap: true, itemCount: assetNames.length, //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( //横轴元素个数 crossAxisCount: 3, //纵轴间距 mainAxisSpacing: 20.0, //横轴间距 crossAxisSpacing: 10.0, //子组件宽高长度比例 childAspectRatio: 1.0), itemBuilder: (BuildContext context, int index) { //Widget Function(BuildContext context, int index) return Container( alignment: Alignment.center, color: Colors.pink, // padding: _edgeInsetsForIndex(index), child: InkWell( onTap: () { //debug: print(assetNames[index]); Navigator.of(context).push(MaterialPageRoute(builder: (context) { return PhotoPreview( initialIndex: index, photoList: assetNames, ); })); }, child: Image.asset( assetNames[index], height: 250.0, width: 250.0, fit: BoxFit.cover, ), ) ); } ), ),
标签:index,GridView,展示,int,PhotoPreview,photoList,context,initialIndex,Flutter 来源: https://www.cnblogs.com/lude1994/p/15741084.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。