美文网首页
Flutter Tips 01

Flutter Tips 01

作者: luehning | 来源:发表于2019-11-28 15:31 被阅读0次

1 AppBar

官方示意图

1.1 被限制了宽度的leading属性

在官方的这个图中,leading是被限制了宽度,且是个正方形。


leading=ConstrainedBox(constraints:constBoxConstraints.tightFor(width:_kLeadingWidth),
child:leading,);

constdouble_kLeadingWidth=kToolbarHeight;

constdoublekToolbarHeight=56.0;

从源码上看,leading的宽度被设置为了56PX。

1.2自定义AppBar

class ThemeAppBar extends StatefulWidget implements PreferredSizeWidget {

  @override
  _ThemeAppBarState createState() => _ThemeAppBarState();

  @override
  //设置AppBar的宽度
  Size get preferredSize => Size.fromHeight(160);
}

class _ThemeAppBarState extends State<ThemeAppBar> {
  @override
  Widget build(BuildContext context) {
    return Container(
      //SafeArea 外面再包一个Container组件并且对Container设置背景色,
      // 则背景色覆盖了SafeArea的白色背景
      color: Color(lnThemeLightColor),
      child: SafeArea(
          child: Container(
        color: Color(lnThemeLightColor),
        child: Column(
          children: <Widget>[
            GestureDetector(
              child: Icon(
                Icons.arrow_back_ios,
                color: Color(lnBackArrowColor),
              ),
              onTap: () {
                Navigator.pop(context);
              },
            ),
            Container(),
          ],
        ),
      )),
    );
  }
}

1.3自定义StatusBar

状态栏一般分为light浅色和dark深色两种,在自定义AppBar的时候,如果AppBar的背景色为浅色系的,则需要设置深色的StatusBar,反之亦然。

设置背景色也分两种情况,其一是没有使用Scaffold组件,也就是上面自定义AppBar的情况

1.3.1 无scaffold组件的情况
Widget build(BuildContext context) {
   
    return AnnotatedRegion(
        //SystemUiOverlayStyle.dark
        //SystemUiOverlayStyle.light
        value: SystemUiOverlayStyle.dark,
        child: Container(
        
        child: SafeArea(
            child: Container(),)));}
1.3.2 使用scaffold组件的情况
return  Material(
        child: Scaffold(
          appBar: AppBar(
            title: Text(),
           //Brightness.light  黑色文字
           //Brightness.dark   白色文字
            brightness: Brightness.light,
          ),
          body: Text()),
    );

1.3.3 AppBar属性
AppBar({
    Key key,
    this.leading,//一般是个按钮组件
    this.automaticallyImplyLeading = true,//自动设置leading,根据scaffold组件是否存在drawer或者是否可以会退来决定leading中的按钮组件的显示
    this.title,//页面级标题
    this.actions,//标题右边的按钮,传一个数组进去,多个IconButton组件,或一个PopupMenuButton组件。
    this.flexibleSpace,//FlexibleSpaceBar组件。
    this.bottom,//典型的用法是TabBar组件。必须继承PreferredSizeWidget组件。
    this.elevation,//AppBar的阴影
    this.shape,//当AppBar的阴影大于零时,展示
    this.backgroundColor,//背景色,设置的时候要协同设置[brightness], [iconTheme], [textTheme],如果没有设置则使用[ThemeData.appBarTheme.color] 或[ThemeData.primaryColor]。
    this.brightness,
    this.iconTheme,
    this.actionsIconTheme,
    this.textTheme,
    this.primary = true,
    this.centerTitle,
    this.titleSpacing = NavigationToolbar.kMiddleSpacing,
    this.toolbarOpacity = 1.0,
    this.bottomOpacity = 1.0,
  }) : assert(automaticallyImplyLeading != null),
       assert(elevation == null || elevation >= 0.0),
       assert(primary != null),
       assert(titleSpacing != null),
       assert(toolbarOpacity != null),
       assert(bottomOpacity != null),
       preferredSize = Size.fromHeight(kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0)),
       super(key: key);

相关文章

  • Flutter Tips 01

    1 AppBar 1.1 被限制了宽度的leading属性 在官方的这个图中,leading是被限制了宽度,且是个...

  • Flutter优化相关

    Flutter之禅 内存优化篇Flutter ImageCacheFlutter 性能优化 Tips

  • VSCode搭建Flutter开发环境 For Mac

    Tips: Flutter 相关内容将在稀土掘金中持续更新... VSCode搭建Flutter开发环境 For ...

  • Flutter Tips

    如何全局修改App字体大小?修改MediaQuery里面的textScaleFactor属性,以新的MediaQu...

  • Flutter tips

    flutter禁用滚动事件Flutter进阶:深入探究 ListView 和 ScrollPhysicsFlutt...

  • flutter 小tips

    常用快捷键: 展开/关闭代码块: command + .跳转到 下/上 一个光标位置: alt + comman...

  • Flutter Tips记录

    1. 访客模式 查找最近的RenderObjectElement 2. 锁 flutter是单线程的,在_Inac...

  • Flutter之Tips

    1. flutter隐藏控件方法 2.日期比较 3.待续...

  • Flutter小tips

    全局灰色

  • Dart tips for Flutter

    作者:ZacJi链接:https://juejin.cn/post/6875645074068865031[htt...

网友评论

      本文标题:Flutter Tips 01

      本文链接:https://www.haomeiwen.com/subject/btpuwctx.html