如何使每个网格图块都可点击以将我带到 Flutter 中的新页面
How can I make each grid tile clickable to bring me to a new page in Flutter
我需要以下代码的帮助...我创建了一个包含特定数量图块的网格...我希望能够单独单击每个图块并在单击后打开一个新页面.我如何在 android 工作室中执行此操作?
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
);
},
),
),
);
}
import 'package:flutter/material.dart';
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return RawMaterialButton(
onPressed: () {
/// Navigation code will come here
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
},
),
),
);
}
我们可以将 Card
Widget
包装在 GestureDetector
中以使用 onTap()
方法:
return GestureDetector(
onTap: () {
// let's use the magic of Navigator to navigate to another screen
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()), // second screen widget
);
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
我们的完整代码段将是:
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return GestureDetector(
onTap: () {
// let's use the magic of Navigator to navigate to another screen
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()), // second screen widget
);
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
},
),
),
);
}
我需要以下代码的帮助...我创建了一个包含特定数量图块的网格...我希望能够单独单击每个图块并在单击后打开一个新页面.我如何在 android 工作室中执行此操作?
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
);
},
),
),
);
}
import 'package:flutter/material.dart';
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return RawMaterialButton(
onPressed: () {
/// Navigation code will come here
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
},
),
),
);
}
我们可以将 Card
Widget
包装在 GestureDetector
中以使用 onTap()
方法:
return GestureDetector(
onTap: () {
// let's use the magic of Navigator to navigate to another screen
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()), // second screen widget
);
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
我们的完整代码段将是:
class GridOne extends StatefulWidget {
@override
_GridOneState createState() => new _GridOneState();
}
class _GridOneState extends State<GridOne> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GridView.count(
crossAxisCount: 6,
children: List.generate(
947,
(index) {
return GestureDetector(
onTap: () {
// let's use the magic of Navigator to navigate to another screen
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()), // second screen widget
);
},
child: Card(
elevation: 10.0,
color: Color(0xFF184946),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
color: Color(0xFF184946),
child: Center(
child: Text(
'$index',
style: TextStyle(fontSize: 18, color: Color(0xFFFCF8F8)),
),
),
),
),
),
);
},
),
),
);
}