在颤动中全局更改Appbar的形状

时间:2020-05-12 04:58:40

标签: flutter

我可以在颤抖中更改应用栏的形状

    return Scaffold(
      appBar: AppBar(
        elevation: 0.0,
        shape: ContinuousRectangleBorder(
          borderRadius: const BorderRadius.only(
            bottomLeft: Radius.circular(80.0),
          ),
        ),
        title: Text('AppBar'),
      ),
    );

我不希望每次创建Scaffold时都将AppBar传递给它,我想在全球范围内使用(可能是我们可以做到的主题)

2 个答案:

答案 0 :(得分:1)

您可以创建一个单独的小部件,为您返回自定义应用栏,如下所示。

class CustomAppBar extends PreferredSize {
  @override
  Size get preferredSize {
    return new Size.fromHeight(56.0);
  }

  @override
  Widget build(BuildContext context) {
    return AppBar(
      elevation: 0.0,
      shape: ContinuousRectangleBorder(
        borderRadius: const BorderRadius.only(
          bottomLeft: Radius.circular(80.0),
        ),
      ),
      title: Text('AppBar'),
    );
  }
}

现在您可以将此小部件分配给应用栏。

答案 1 :(得分:0)

您只需要使用在其上创建GlobalUtil的{​​{1}}类,并在如下所述的所有类中使用

GlobalUtil.dart

AppBar

在任何类中,您都可以按以下方式使用它

import 'package:flutter/material.dart';

import 'colors.dart';


class GlobalUtil {

  static Widget showAppBar(BuildContext context, String msg, String path) {
    return AppBar(
      centerTitle: true,
      title: Text(
        msg,
        style: TextStyle(
            color: ColorConst.TEXT_DARK_GREY_COLOR,  /// USE THE COLOR AS PER YOUR REQUIREMENT
            fontFamily: 'Medium', /// USE THE FONT FAMILY AS PER YOUR REQUIREMENT
            fontSize: Dimens.TEXT_EXTRA_EXTRA_LARGE),////// USE THE DIMENSION OF TEXT AS PER YOUR REQUIREMENT
      ),
        actions: [
          new IconButton(
            icon: new Image.asset("YOUR_ICON_PATH",height: 20.0,width: 20.0,),
            onPressed: () => {


            },
          )
        ],
      leading: Padding(
          padding: EdgeInsets.all(8),
          child: new IconButton(
            // icon: new Icon(iconData, color: Colors.black),
            icon: new Image.asset(path),
            onPressed: () => Navigator.of(context).pop(),
          )),
      backgroundColor: Colors.PINK,
      elevation: 0.0,
    );

  }

}