我正在尝试在Flutter中创建一个PopupMenu,它位于图标下方。但是,该图标未显示。我正在使用本期建议的代码:Is it possible to use a DropDownButton within an IconButton in Flutter?,但尝试使其适应我的小部件树。
我已附上我尝试过的代码的示例。
@override
Widget build(BuildContext context) {
return new Container(
height: MediaQuery.of(context).size.height,
child: SingleChildScrollView(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
new Container(
height: 220.0,
width: MediaQuery.of(context).size.width,
child: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
child: Column(
children: <Widget>[
SizedBox(height: 40.0),
Row(
children: <Widget>[
Expanded(
child: Stack(
children: [
Center(
child: Text(
'Profile',
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: 'Lato',
color: Colors.white,
fontSize: 50.0,
fontWeight: FontWeight.w700,
),
),
),
Positioned(
right: 8,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(padding: EdgeInsets.only(top: 400)),
PopupMenuButton<String>(
icon: Icon(
Icons.settings,
color: Colors.white,
size: 30.0,
),
onSelected: choiceAction,
itemBuilder: (BuildContext context) {
return Constants.choices.map((String choice) {
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
},
),
],
),
),
],
),
),
],
),
答案 0 :(得分:0)
在Flutter中,我也遇到了类似的问题:构建一个PopupMenuButton
并填充PopupMenuItem
,而我打算在其前面加上基本的Icon
。
但是,由于某些未知原因,未显示该图标。我通过使用受ListTile
源代码启发的CheckedPopupMenuItem
构建器解决了这个问题。
enum MyMenuEntries { previous, next }
class MyMenu extends StatelessWidget {
@override
Widget build(BuildContext context) {
return PopupMenuButton<MyMenuEntries>(
onSelected: (MyMenuEntries entry) {},
itemBuilder: (BuildContext context) => [
PopupMenuItem<MyMenuEntries>(
value: MyMenuEntries.previous,
child: ListTile(leading: Icon(Icons.arrow_back), title: Text("Previous")),
),
PopupMenuItem<MyMenuEntries>(
value: MyMenuEntries.next,
child: ListTile(leading: Icon(Icons.arrow_forward), title: Text("Next")),
),
],
);
}
}