Flutter:在 SizedBox 之前添加图标。为什么 Row 在 AppBar 之后消失了?
Flutter: Adding icon before SizedBox. Why Row dissappears after AppBar?
我想在类别左侧放置一个菜单按钮。
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index)),
),
);
}
How it looks right now
这是应用栏之后的类别代码。我想把菜单按钮放在类别的开头。
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: Row(
children: <Widget>[
IconButton(icon: Icon(Icons.menu), onPressed: () {}),
ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index))
],
)),
);
}
And then this happened
我的代码有什么问题?
您需要用 Expanded
小部件包装 ListView
。
我以您的代码为例添加了一个演示:
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: Row(
children: <Widget>[
IconButton(icon: Icon(Icons.menu), onPressed: () {}),
// wrap with expanded widget
Expanded( // new line
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index)),
)
],
),
),
);
}
我想在类别左侧放置一个菜单按钮。
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index)),
),
);
}
How it looks right now
这是应用栏之后的类别代码。我想把菜单按钮放在类别的开头。
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: Row(
children: <Widget>[
IconButton(icon: Icon(Icons.menu), onPressed: () {}),
ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index))
],
)),
);
}
And then this happened
我的代码有什么问题?
您需要用 Expanded
小部件包装 ListView
。
我以您的代码为例添加了一个演示:
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: kDefaultPaddin),
child: SizedBox(
height: 25,
child: Row(
children: <Widget>[
IconButton(icon: Icon(Icons.menu), onPressed: () {}),
// wrap with expanded widget
Expanded( // new line
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: categories.length,
itemBuilder: (context, index) => buildCategory(index)),
)
],
),
),
);
}