Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何自定义选项卡栏指示器的宽度和高度?_Dart_Flutter - Fatal编程技术网

Dart 如何自定义选项卡栏指示器的宽度和高度?

Dart 如何自定义选项卡栏指示器的宽度和高度?,dart,flutter,Dart,Flutter,我正在使用一个TabBar小部件,我想定制指示器的高度和宽度。除了可以修改的颜色,我看不到任何其他属性 如果您不希望选项卡按默认方式水平扩展以填充屏幕,请为选项卡栏指定IsCrollable:true属性 您可以使用包装在PreferredSize中的容器来调整选项卡栏的大小。(只有当您希望它位于AppBar的底部插槽中时,PreferredSize才是必需的)这会使指示器显示得更窄,因为选项卡栏不填充屏幕。但是,指示器具有硬编码高度。如果您不喜欢它,则必须导入自己的副本并自定义该文件中的常量

我正在使用一个TabBar小部件,我想定制指示器的高度和宽度。除了可以修改的颜色,我看不到任何其他属性


如果您不希望选项卡按默认方式水平扩展以填充屏幕,请为
选项卡栏
指定
IsCrollable:true
属性

您可以使用包装在
PreferredSize
中的
容器来调整
选项卡栏的大小。(只有当您希望它位于
AppBar
底部
插槽中时,
PreferredSize
才是必需的)这会使指示器显示得更窄,因为
选项卡栏不填充屏幕。但是,指示器具有硬编码高度。如果您不喜欢它,则必须导入自己的副本并自定义该文件中的常量

请注意,您还可以使用
容器
来设置单个
选项卡
的高度,尽管这似乎不是您想要做的


您可以使用选项卡栏上的
indicatorSize:TabBarIndicatorSize.label
使指示器与标签大小相同

或者您可以直接设置
指示器
,这是一个
装饰
,您可以自定义:

AppBar(
    bottom: TabBar(
        indicator: UnderlineTabIndicator(
          borderSide: BorderSide(width: 5.0),
          insets: EdgeInsets.symmetric(horizontal:16.0)
        ),
        tabs: [
          Tab(text: 'tab 1'),
          Tab(text: 'tab 2'),
          Tab(text: 'tab 3'),
        ],
     ),
);

有关更多自定义选项,请选中此项。

您可以使用属性
选项卡栏(指示器重量:细节高度)
您可以调整选项卡之间的间距->labelPadding:EdgeInsets.symmetric(水平:5),与此答案相同,最好使用容器,但我只使用一个容器

换一种方式,我将使用底部栏

bottomNavigationBar:新材质(
颜色:Colors.teal,
子容器:新容器(
身高:60.0,
孩子:新的TabBar(
控制器:控制器,
选项卡:[
新建选项卡(图标:新建图标(Icons.access_alarm)),
新建选项卡(图标:新建图标(图标.帐户\余额)),
]
),
)
),

查看套装,了解更高级的款式。

这个答案肯定对我有帮助。我不明白为什么它没有被标记为答案。谢谢设置
应用程序栏的高度如何?我们有类似的解决方案吗?如果我需要为所有
选项卡使用固定宽度的指示器怎么办?您所说的
细节高度是什么意思?
AppBar(
    bottom: TabBar(
        indicator: UnderlineTabIndicator(
          borderSide: BorderSide(width: 5.0),
          insets: EdgeInsets.symmetric(horizontal:16.0)
        ),
        tabs: [
          Tab(text: 'tab 1'),
          Tab(text: 'tab 2'),
          Tab(text: 'tab 3'),
        ],
     ),
);
bottomNavigationBar: new Material(
    color: Colors.teal,
    child: new Container(
      height: 60.0,
      child: new TabBar(
        controller: controller,
        tabs: <Widget>[
            new Tab(icon: new Icon(Icons.access_alarm)),
            new Tab(icon: new Icon(Icons.account_balance)),
        ]
      ),
    )
  ),