4

我正在尝试使用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),
              ),
            )
          ],
        ),
      ),
4

3 回答 3

2

有一种简单的方法可以在屏幕上移动小部件:

Widget _adjustNavigationBarButtonPosition(Widget button, double x) {
    if (button == null) return null;

    return Container(
        transform: Matrix4.translationValues(x, 0, 0),
        child: button,
    );
}

用这个方法包装你的 CupertinoButton 并指定一个偏移量。要完全删除填充,偏移量应该是16.0.

于 2019-05-11T16:54:44.783 回答
2

可悲的是,没有办法

查看这行源代码,可以看到他们Padding在末尾使用了a _kNavBarEdgePadding,即,即16.0。对于start.

这意味着CupertinoSliverNavigationBar您将无法删除它,Padding因为没有访问点可以更改它。您必须为此创建自己的小部件

_CupertinoPersistentNavigationBar部件包含Padding并被 使用CupertinoSliverNavigationBar,如可以在此处看到和在此处完成。

于 2018-06-22T15:55:10.297 回答
0

您可以使用Matrix4.translationValues在容器内移动子项。在您的情况下, xMatrix4.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();
                  });
            },
            )
          ),
        )
      ],
    ),
  ),
于 2020-05-20T20:10:09.033 回答