网页,带有可以敲击的卡的仪表板,因此它将您引导到卡上显示的页面
我是我正在学习的第一语言的编程和颤抖的新手。我正在尝试创建一个仪表板,该仪表板显示6个元素。创建和显示元素目前有效,但是我不知道如何使卡可敲击,因此当用户单击它时,它将您引导您到其中显示的页面。
import 'package:flutter/material.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
// to get size
var size = MediaQuery.of(context).size;
// style
var cardTextStyle = TextStyle(
fontFamily: "Open Sans",
fontSize: 14,
color: Color.fromRGBO(63, 63, 63, 1));
return Scaffold(
body: Stack(
children: <Widget>[
Container(
height: size.height * .3,
decoration: BoxDecoration(
image: DecorationImage(
alignment: Alignment.topCenter,
image: AssetImage('')),
),
),
SafeArea(
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Container(
height: 64,
margin: EdgeInsets.only(bottom: 20),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
CircleAvatar(
radius: 32,
backgroundImage: NetworkImage(
'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Crystal_Clear_kdm_user_female.svg/2048px-Crystal_Clear_kdm_user_female.svg.png'),
),
SizedBox(
width: 16,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'User',
style: TextStyle(
fontFamily: "Open Sans",
color: Colors.black,
fontSize: 20),
),
Text(
'ID:4101410141',
style: TextStyle(
fontSize: 14,
color: Colors.black,
fontFamily: "Open Sans"),
)
],
)
],
),
),
Expanded(
child: GridView.count(
mainAxisSpacing: 1,
crossAxisSpacing: 1,
primary: false,
crossAxisCount: 4,
children: <Widget>[
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'Description',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'News',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Messagebox_info.svg/1200px-Messagebox_info.svg.png'),
),
Text(
'Information',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'Registration',
style: cardTextStyle,
)
],
),
),
],
),
),
],
),
),
),
],
),
);
}
}
I'm new to Programming and Flutter is the first Language I'm learning. I am trying to create a Dashboard, which displays 6 Elements. Creating and displaying the Elements worked for now, but I don't know how to make the Cards tappable, so that when a User clicks on it, it directs you to the Page displayed on it.
import 'package:flutter/material.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
// to get size
var size = MediaQuery.of(context).size;
// style
var cardTextStyle = TextStyle(
fontFamily: "Open Sans",
fontSize: 14,
color: Color.fromRGBO(63, 63, 63, 1));
return Scaffold(
body: Stack(
children: <Widget>[
Container(
height: size.height * .3,
decoration: BoxDecoration(
image: DecorationImage(
alignment: Alignment.topCenter,
image: AssetImage('')),
),
),
SafeArea(
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Container(
height: 64,
margin: EdgeInsets.only(bottom: 20),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
CircleAvatar(
radius: 32,
backgroundImage: NetworkImage(
'https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Crystal_Clear_kdm_user_female.svg/2048px-Crystal_Clear_kdm_user_female.svg.png'),
),
SizedBox(
width: 16,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'User',
style: TextStyle(
fontFamily: "Open Sans",
color: Colors.black,
fontSize: 20),
),
Text(
'ID:4101410141',
style: TextStyle(
fontSize: 14,
color: Colors.black,
fontFamily: "Open Sans"),
)
],
)
],
),
),
Expanded(
child: GridView.count(
mainAxisSpacing: 1,
crossAxisSpacing: 1,
primary: false,
crossAxisCount: 4,
children: <Widget>[
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'Description',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'News',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Messagebox_info.svg/1200px-Messagebox_info.svg.png'),
),
Text(
'Information',
style: cardTextStyle,
)
],
),
),
Card(
shape:RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8)
),
elevation: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 64,
backgroundImage: NetworkImage(
''),
),
Text(
'Registration',
style: cardTextStyle,
)
],
),
),
],
),
),
],
),
),
),
],
),
);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以通过使用 inkwell 小部件来单击所需的卡来完成,该卡 widget intap 参数可以在单击手势上运行所需功能, Navigator 更改的路线屏幕。
如下所示,您可以将参数传递到目标屏幕,也可以 返回参数返回到 parent opent屏幕。
It can be done by making the desired card clickable by using InkWell widget, which takes the onTap parameter to run the desired function on click gesture and Navigator to change routes of the screens.
As shown below, you can pass arguments to the target screen and can also return arguments back to the parent screen.