android - 我如何在颤动中单击交错网格视图中的项目
问题描述
如何StaggeredGridView
在 Flutter 中单击项目?我想添加Navigator
链接照片并将其发送到另一个屏幕。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Flutter Staggered View",
home: MyHome(),
);
}
}
class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: StaggeredGridView.countBuilder(
crossAxisCount: 4,
itemCount: 15,
itemBuilder: (BuildContext context, int index) => new Container(
height: 120.0,
width: 120.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('https://picsum.photos/500/500?random=$index') ,
fit: BoxFit.fill,
),
shape: BoxShape.rectangle,
),
),
staggeredTileBuilder: (int index) =>
new StaggeredTile.count(2, index.isEven ? 3 : 2),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
),
),
);
}
}
解决方案
您可以使用可以处理点击事件的小部件包装由返回的itemBuilder
小部件,例如 aGestureDetector
或 an InkWell
:
itemBuilder: (BuildContext context, int index) => GestureDetector(
onTap: () {
// call Navigator here
},
child: Container(
height: 120.0,
width: 120.0,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage('https://picsum.photos/500/500?random=$index'),
fit: BoxFit.fill,
),
shape: BoxShape.rectangle,
),
),
),
有关GestureDetector或InkWell的更多信息,请参阅文档
推荐阅读
- c - Scala 的 Option 或 Rust 的 C 中的 Result 错误处理
- font-size - 如何增加 xy 图点的大小
- pandas - DataFrame中缺失记录的可视化
- javascript - 对 Docusaurus 进行上游操作并确保文件加载顺序正确
- javascript - 如何查找 ReactInstance 的所有子图像
- php - html-php 在同一页面上发布表单 - iframe 问题
- android - Firebase 存储异常:发生未知错误,请检查服务器响应的 http 结果代码和内部异常
- c++ - 如何在 C++ 中跨多个进程使用共享向量
- php - php mysqli 选择表中的数据而不是不同的表中的数据
- blazor-client-side - 如何向 Blazor WebAssembly 3.2.0 Preview 3 应用程序添加其他声明