在 Flutter 中堆叠条件导航器按钮
Stacking conditional navigator buttons in Flutter
我正在尝试为滑动菜单创建条件菜单列表。到目前为止,就为不同类型的用户显示不同的菜单项而言,我已经获得了可用的功能。但我现在唯一的问题是,在菜单中,这两个项目“消息”和“设置”并排显示。我试图将第二个图标行移到行括号之外等等。我只是想不通。对我来说,这些括号已经很混乱了。有人可以看看这个并帮助我在“消息”下设置“设置”图标吗?
我包含了完整的方法片段,这样每个人都可以了解我正在尝试做什么。这是我知道如何做的唯一方法,我可以使我的菜单有条件。
customSlideMenu() {
Function onTap;
bool ownProfile = currentOnlineUserId == widget.userProfileId;
if(ownProfile) {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 0, 8.0, 0),
child: InkWell(
splashColor: Colors.blue,
onTap: onTap,
child: Container(
height: 40,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Messages",
style: TextStyle(fontSize: 16.0),
),
),
Icon(Icons.settings),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Settings",
style: TextStyle(fontSize: 16.0),
),
),
],
),
],
),
),
),
);
} else {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 0, 8.0, 0),
child: InkWell(
splashColor: Colors.blue,
onTap: onTap,
child: Container(
height: 40,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Message",
style: TextStyle(fontSize: 16.0),
),
),
Icon(Icons.block),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Block",
style: TextStyle(fontSize: 16.0),
),
),
],
),
],
),
),
),
);
}
}
Row 小部件将其子项紧挨着对齐。尝试使用 Column 小部件实现将两个子级堆叠在一起
Column(
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Messages",
style: TextStyle(fontSize: 16.0),
),
),
],
),
Row(
children: <Widget>[
Icon(Icons.settings),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Settings",
style: TextStyle(fontSize: 16.0),
),
),
],
)
],
),
我正在尝试为滑动菜单创建条件菜单列表。到目前为止,就为不同类型的用户显示不同的菜单项而言,我已经获得了可用的功能。但我现在唯一的问题是,在菜单中,这两个项目“消息”和“设置”并排显示。我试图将第二个图标行移到行括号之外等等。我只是想不通。对我来说,这些括号已经很混乱了。有人可以看看这个并帮助我在“消息”下设置“设置”图标吗?
我包含了完整的方法片段,这样每个人都可以了解我正在尝试做什么。这是我知道如何做的唯一方法,我可以使我的菜单有条件。
customSlideMenu() {
Function onTap;
bool ownProfile = currentOnlineUserId == widget.userProfileId;
if(ownProfile) {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 0, 8.0, 0),
child: InkWell(
splashColor: Colors.blue,
onTap: onTap,
child: Container(
height: 40,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Messages",
style: TextStyle(fontSize: 16.0),
),
),
Icon(Icons.settings),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Settings",
style: TextStyle(fontSize: 16.0),
),
),
],
),
],
),
),
),
);
} else {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 0, 8.0, 0),
child: InkWell(
splashColor: Colors.blue,
onTap: onTap,
child: Container(
height: 40,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Message",
style: TextStyle(fontSize: 16.0),
),
),
Icon(Icons.block),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Block",
style: TextStyle(fontSize: 16.0),
),
),
],
),
],
),
),
),
);
}
}
Row 小部件将其子项紧挨着对齐。尝试使用 Column 小部件实现将两个子级堆叠在一起
Column(
children: <Widget>[
Row(
children: <Widget>[
Icon(Icons.mail),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Messages",
style: TextStyle(fontSize: 16.0),
),
),
],
),
Row(
children: <Widget>[
Icon(Icons.settings),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Settings",
style: TextStyle(fontSize: 16.0),
),
),
],
)
],
),