如何在 Scaffold 中更改 appBar 的大小

17 浏览
0 Comments

如何在 Scaffold 中更改 appBar 的大小

在Flutter中,我如何简单地设置AppBar的高度?栏的标题应该垂直居中显示(在那个AppBar中)。

0
0 Comments

问题:如何在Scaffold中更改appBar的大小?

原因:想要自定义appBar的高度,但是默认情况下无法直接更改appBar的大小。

解决方法:

可以使用PreferredSize和flexibleSpace来实现:

appBar: PreferredSize(

preferredSize: Size.fromHeight(100.0),

child: AppBar(

automaticallyImplyLeading: false, // 隐藏leading widget

flexibleSpace: SomeWidget(),

)

),

通过设置PreferredSize的preferredSize属性可以指定appBar的高度为100.0,然后在AppBar的flexibleSpace属性中添加自定义的SomeWidget来实现自定义高度。需要注意的是,在SomeWidget中需要设置好间距。

这样就可以保留AppBar的elevation属性,以保持其阴影可见,并且可以自定义高度,这正是我正在寻找的解决方法。

0
0 Comments

问题的原因是:在Scaffold中更改AppBar的大小。

解决方法是:使用toolbarHeight属性来调整AppBar的大小,并将其与flexibleSpace属性一起使用。

以下是解决方法的代码示例:

AppBar(

toolbarHeight: 120, // 设置所需的高度

flexibleSpace: Container(

color: Colors.orange,

child: Column(

children: [

Text('1'),

Text('2'),

Text('3'),

Text('4'),

],

),

),

)

这个解决方法直接从小部件的参数中解决了问题,是更好、更简单的解决方案。

0
0 Comments

问题的出现原因:用户想要改变Scaffold中AppBar的大小,但是默认情况下无法直接修改AppBar的大小。

解决方法:

1. 使用PreferredSize类来改变AppBar的大小,通过设置preferredSize属性来指定所需的高度。

2. 使用centerTitle属性来水平居中标题。

3. 如果想要垂直居中标题,可以将标题包裹在一个容器中,并设置顶部边距来实现。

4. 可以创建一个独立的AppBar类,在需要的地方重复使用该类。

5. 通过使用flexibleSpace属性来使标题居中,可以参考StackOverflow上的回答。

下面是整理好的文章:

如何在Scaffold中改变AppBar的大小

在Flutter的Scaffold中,要改变AppBar的大小,可以使用PreferredSize类。首先,我们需要设置preferredSize属性来指定所需的高度,然后将AppBar包装在PreferredSize中,如下所示:

class MyApp extends StatelessWidget {

Widget build(BuildContext context) {

return MaterialApp(

title: 'Example',

home: Scaffold(

appBar: PreferredSize(

preferredSize: Size.fromHeight(50.0), // 这里是所需的高度

child: AppBar(

// ...

)

),

body: // ...

)

);

}

}

上述代码将增加AppBar的大小,但是标题文本并没有居中显示。为了使标题文本水平居中,可以使用centerTitle属性,如下所示:

AppBar(

centerTitle: true,

// ...

)

然而,这样做只能使标题文本水平居中,无法实现垂直居中。如果想要实现垂直居中,可以将标题文本包裹在一个容器中,并设置顶部边距来居中显示,如下所示:

AppBar(

title: Container(

margin: EdgeInsets.only(top: 8.0), // 设置顶部边距

child: Text('Title'),

),

// ...

)

如果想要在整个应用程序中设置AppBar的大小而不是每个AppBar都进行修改,可以创建一个独立的AppBar类,并在需要的地方重复使用该类。

另外,还可以通过使用flexibleSpace属性来实现标题的居中显示。可以参考StackOverflow上的这个回答来了解更多详细信息。

需要注意的是,如果Scaffold中有抽屉(drawer),使用上述方法可能无法显示抽屉。

0