Flutter--自定义AppBar

本文介绍了如何在Flutter中创建自定义AppBar,包括使用StatelessWidget和StatefulWidget两种方式,并强调了在背景装饰层中使用SafeArea的重要性,确保内容不被信息栏遮挡。示例代码展示了自定义AppBar的构建过程及其在Scaffold中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {

  final Widget child;

  CustomAppBar(this.child);

  @override
  Widget build(BuildContext context) {
    return child;
  }

  @override
  Size get preferredSize => Size(100, 100);
}



//有特殊复杂的也可用StatefulWidget来解决

class CustomAppBar extends StatefulWidget implements PreferredSizeWidget {

  final Widget child;

  CustomAppBar(this.child);

  @override
  State<StatefulWidget> createState() => _CustomAppBarState();

  @override
  Size get preferredSize => Size(100, 50);  //写啥没差,自动采用子视图尺寸

}

class _CustomAppBarState extends State<CustomAppBar> {
  @override
  Widget build(BuildContext context) {
    return widget.child;
  }
}

实例

//使用自定义的AppBar要注意在背景装饰层里使用一个SafeArea来保证子元素别顶到信息栏



  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: CustomAppBar(Container(
        color: Colors.red,
        child: SafeArea(child: Row(children: [
          BackButton()
        ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,)),
      )),
      body: Text("data")
    );
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值