删除 CupertinoSliverNavigationBar 上的填充
Remove Padding on CupertinoSliverNavigationBar
我正在尝试使用 CupertinoSliverNavigationBar
,实际上它很棒,但由于某些原因我无法将尾部放在导航栏的末尾。我抬头一看,我(猜猜我)发现里面有Padding
这是我的代码
new CupertinoPageScaffold(
child: new CustomScrollView(
slivers: <Widget>[
new CupertinoSliverNavigationBar(
largeTitle: new Text('Tasks'),
trailing: new CupertinoButton(
child: new Icon(AdditionalCupertinoIcons.compose, size: 32.0),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return new CupertinoAlertDialog();
});
},
padding: EdgeInsets.all(0.0),
),
)
],
),
),
遗憾的是,无能为力。
正在查看 this line of source code, you can see that they are using a Padding
at the end, which is _kNavBarEdgePadding
,即 16.0
。 start
.
也一样
这意味着使用 CupertinoSliverNavigationBar
您将无法删除 Padding
,因为没有访问点可以更改它。您必须为此创建 自己的小部件。
_CupertinoPersistentNavigationBar
widget contains the Padding
and is used by CupertinoSliverNavigationBar
, as can be seen here and for completion here.
有一种简单的方法可以在屏幕上移动小部件:
Widget _adjustNavigationBarButtonPosition(Widget button, double x) {
if (button == null) return null;
return Container(
transform: Matrix4.translationValues(x, 0, 0),
child: button,
);
}
使用此方法包装您的 CupertinoButton 并指定一个偏移量。要完全删除填充,偏移量应为 16.0
.
您可以使用 Matrix4.translationValues 在容器内移动子项。在您的情况下,x Matrix4.translationValues(12, 0, 0),
应该为正,以便将尾随向右移动。
new CupertinoPageScaffold(
child: new CustomScrollView(
slivers: <Widget>[
new CupertinoSliverNavigationBar(
largeTitle: new Text('Tasks'),
trailing: Container(
transform: Matrix4.translationValues(12, 0, 0),
child : CupertinoButton(
child: new Icon(AdditionalCupertinoIcons.compose, size: 32.0),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return new CupertinoAlertDialog();
});
},
)
),
)
],
),
),
我正在尝试使用 CupertinoSliverNavigationBar
,实际上它很棒,但由于某些原因我无法将尾部放在导航栏的末尾。我抬头一看,我(猜猜我)发现里面有Padding
这是我的代码
new CupertinoPageScaffold(
child: new CustomScrollView(
slivers: <Widget>[
new CupertinoSliverNavigationBar(
largeTitle: new Text('Tasks'),
trailing: new CupertinoButton(
child: new Icon(AdditionalCupertinoIcons.compose, size: 32.0),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return new CupertinoAlertDialog();
});
},
padding: EdgeInsets.all(0.0),
),
)
],
),
),
遗憾的是,无能为力。
正在查看 this line of source code, you can see that they are using a Padding
at the end, which is _kNavBarEdgePadding
,即 16.0
。 start
.
这意味着使用 CupertinoSliverNavigationBar
您将无法删除 Padding
,因为没有访问点可以更改它。您必须为此创建 自己的小部件。
_CupertinoPersistentNavigationBar
widget contains the Padding
and is used by CupertinoSliverNavigationBar
, as can be seen here and for completion here.
有一种简单的方法可以在屏幕上移动小部件:
Widget _adjustNavigationBarButtonPosition(Widget button, double x) {
if (button == null) return null;
return Container(
transform: Matrix4.translationValues(x, 0, 0),
child: button,
);
}
使用此方法包装您的 CupertinoButton 并指定一个偏移量。要完全删除填充,偏移量应为 16.0
.
您可以使用 Matrix4.translationValues 在容器内移动子项。在您的情况下,x Matrix4.translationValues(12, 0, 0),
应该为正,以便将尾随向右移动。
new CupertinoPageScaffold(
child: new CustomScrollView(
slivers: <Widget>[
new CupertinoSliverNavigationBar(
largeTitle: new Text('Tasks'),
trailing: Container(
transform: Matrix4.translationValues(12, 0, 0),
child : CupertinoButton(
child: new Icon(AdditionalCupertinoIcons.compose, size: 32.0),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return new CupertinoAlertDialog();
});
},
)
),
)
],
),
),