Flutter:如何在 Flutter 中的 GridView.builder 和 Navigator.push 处的每个索引中设置可点击系统
Flutter: how to set clickable systems in each index at GridView.builder with Navigator.push in Flutter
我想为导航器推送 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]}",
)
],), );}, ), ), ),); } }
用手势检测器包裹你的卡片并使用它的 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 代替 gestureDetector,它是相同的,但具有涟漪效应。
我想为导航器推送 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]}",
)
],), );}, ), ), ),); } }
用手势检测器包裹你的卡片并使用它的 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 代替 gestureDetector,它是相同的,但具有涟漪效应。