删除CupertinoSliverNavigationBar上的填充

时间:2018-06-22 15:44:01

标签: flutter flutter-sliver

我正在尝试使用CupertinoSliverNavigationBar,实际上它很棒,但是由于某些原因,我无法将尾部放在导航栏的末尾。我抬头看,我(猜测,我)发现里面有Padding

enter image description here

这是我的代码

   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),
              ),
            )
          ],
        ),
      ),

3 个答案:

答案 0 :(得分:1)

遗憾的是,不能做

查看this line of source code,您会发现他们最后使用Padding,即_kNavBarEdgePadding,即16.0。与start相同。

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

_CupertinoPersistentNavigationBar widget包含PaddingCupertinoSliverNavigationBar使用[x.replace("$","\:") for x in str1.replace("\:","$").split(":")] seen here也使用here完成。

答案 1 :(得分:0)

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

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

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

使用此方法包装CupertinoButton并指定一个偏移量。要完全删除填充,偏移量应为16.0

答案 2 :(得分:0)

您可以使用Matrix4.translationValues在容器中移动一个孩子。在您的情况下,x <space>应该为正数才能将尾随向右移动。

Matrix4.translationValues(12, 0, 0),