我正在 Flutter 中构建一个照片库应用程序,用户可以通过捏合来放大/缩小,以 GridView 格式动态调整列数。我的目标是创建流畅的动画来调整照片大小和更改列数(最多 4 个,最少 1 个),类似于 iPhone 上的“照片”应用程序。
我目前使用 AnimatedBuilder 在列数变化时重建布局,并结合 GestureDetector 来检测捏合手势。以下是我的方法的简要概述:
虽然这有效,但我正在寻找更好或替代的方法:
Widget _buildAnimatedGrid() {
return AnimatedBuilder(
animation: _animationController,
builder: (context, child) {
return LayoutBuilder(
builder: (context, constraints) {
const double itemSpacing = 10.0;
return GridView.builder(
physics: const ClampingScrollPhysics(),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: _columnCount,
mainAxisSpacing: itemSpacing,
crossAxisSpacing: itemSpacing,
childAspectRatio: (604 / 960),
),
itemCount: _images.length,
itemBuilder: (context, index) {
return AnimatedContainer(
duration: const Duration(milliseconds: 300),
curve: Curves.easeOutCubic,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6),
color: Colors.grey[900],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(6),
child: Image.network(
_images[index],
fit: BoxFit.cover,
),
),
);
},
);
},
);
},
);
}
我很好奇:
任何见解、建议或替代实施都将不胜感激! 感谢任何演示或示例工作代码的数百万人。谢谢你