问题描述
我想为GridView构建器的索引中的导航器推入设置可点击的系统。但是我找不到方法,因为我是新手。请帮我。这里是所有源代码。
class category_route extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: GridView.builder(
itemCount: categoryTitleArray.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: (orientation == Orientation.portrait) ? 3 : 4,crossAxisspacing: 5,mainAxisspacing: 5,childAspectRatio: (itemWidth / itemHeight),),itemBuilder: (BuildContext context,int index) {
return new Card(
elevation: 0,color: Colors.transparent,child: new Column(
children: [
Expanded(
child: Container(
child: Image.asset(
categoryImageArray[index],fit: BoxFit.contain,Text(
"${categoryTitleArray[index]}",)
],);},); } }
解决方法
用手势检测器包装您的Card并使用其onTap属性
class category_route extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: GridView.builder(
itemCount: categoryTitleArray.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: (orientation == Orientation.portrait) ? 3 : 4,crossAxisSpacing: 5,mainAxisSpacing: 5,childAspectRatio: (itemWidth / itemHeight),),itemBuilder: (BuildContext context,int index) {
return GestureDetector(
onTap: (){//navigator push here}
child: new Card(
elevation: 0,color: Colors.transparent,child: new Column(
children: [
Expanded(
child: Container(
child: Image.asset(
categoryImageArray[index],fit: BoxFit.contain,Text(
"${categoryTitleArray[index]}",)
],);
)
},);
}
}
您还可以使用InkWell代替相同的手势动作,但具有波纹效果。